Monitor your Python scripts with one decorator — retries, timing, and smart error explanations.
Project description
py-eeive
Monitor your Python scripts with one decorator — automatic retries, timing, and smart error explanations.
No external dependencies. Works with sync and async functions.
Install
pip install py-eeive
Usage
from py_eeive import monitor
@monitor(retries=3, retry_delay=5, log=True, language="english")
def main():
# your script here
...
main()
Parameters
| Parameter | Default | Description |
|---|---|---|
retries |
1 |
How many times to retry on failure |
retry_delay |
5 |
Seconds to wait between retries |
log |
True |
Save error log to logs/ folder as JSON |
language |
"english" |
Output language: "english", "russian", "spanish", "greek" |
custom_errors |
None |
Your own error explanations (dict) |
exponential_backoff |
False |
Double the delay on each retry |
retry_on |
(Exception,) |
Only retry on these specific exceptions |
Example output — success
[py-eeive] Starting: main
──────────────────────────────────────────────────
[py-eeive] ✅ Finished in 2.4 sec
Example output — failure
[py-eeive] Starting: main
──────────────────────────────────────────────────
[py-eeive] ❌ Attempt 1/3 — Line 12 — ZeroDivisionError: division by zero
[py-eeive] 🔄 Retrying in 5 sec...
[py-eeive] ❌ Attempt 2/3 — Line 12 — ZeroDivisionError: division by zero
[py-eeive] 🔄 Retrying in 5 sec...
[py-eeive] ❌ Attempt 3/3 — Line 12 — ZeroDivisionError: division by zero
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💥 Script failed permanently
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Error: ZeroDivisionError: division by zero
Line: 12 in file main.py
Cause: You are dividing a number by zero.
Fix: Check that the denominator is not 0 before dividing.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⏱ 15.3 sec
📄 Log saved: logs/main_2026-04-24_12-00-00.json
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Custom error explanations
MY_ERRORS = {
"MyCustomError": {
"cause": "Something specific to my app went wrong.",
"fix": "Check the config file."
}
}
@monitor(retries=2, custom_errors=MY_ERRORS)
def main():
...
Async support
Works with async functions out of the box:
@monitor(retries=3, retry_delay=2)
async def fetch_data():
...
Retry only on specific exceptions
@monitor(retries=5, retry_on=(ConnectionError, TimeoutError))
def main():
...
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py_eeive-0.0.3.tar.gz
(11.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_eeive-0.0.3.tar.gz.
File metadata
- Download URL: py_eeive-0.0.3.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cb7797d601984f1f2cb579bc39103036483abe78e8386e7ad11fb7280ceda28
|
|
| MD5 |
654cfb6163e20a3fbd7c0ec7e8aa7426
|
|
| BLAKE2b-256 |
0ff288ca8ba2f225dea8c29b66f93e8d85297cea01ee77b271d63986ff3230f9
|
File details
Details for the file py_eeive-0.0.3-py3-none-any.whl.
File metadata
- Download URL: py_eeive-0.0.3-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17153199fb654e0660909039c302167f51e420c6f6f5a62fb937e62fae3d728e
|
|
| MD5 |
304126566ff66fc516645c8b52311de6
|
|
| BLAKE2b-256 |
39db15f599fe184363685f0311003ab2f7166703153146e1630e81c7ef9a9cbb
|