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.
Works with sync and async functions. Features RAM monitoring, variable snapshots, and webhooks.
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 |
webhook_url |
None |
URL for Discord/Slack notifications on final failure |
jitter |
True |
Add random delay to prevent Thundering Herd problem |
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 [██░░░░░░░░] 0.1s — RAM: 15.4 MB — Line 12 — ZeroDivisionError
Snapshot: a=10, b=0
[py-eeive] 🔄 Retrying in 5 sec...
[py-eeive] ❌ Attempt 2/3 [████░░░░░░] 0.1s — RAM: 15.6 MB — Line 12 — ZeroDivisionError
Snapshot: a=10, b=0
[py-eeive] 🔄 Retrying in 5 sec...
[py-eeive] ❌ Attempt 3/3 [██████░░░░] 0.1s — RAM: 15.8 MB — Line 12 — ZeroDivisionError
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💥 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
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-1.1.0.tar.gz.
File metadata
- Download URL: py_eeive-1.1.0.tar.gz
- Upload date:
- Size: 12.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 |
53b8370e318df413920470a4af0f26fb13d551311898a018fcaac377a848a870
|
|
| MD5 |
9d61f87f7fb1953f3e5d2e6a299481b0
|
|
| BLAKE2b-256 |
fb37c312c8195a612718122e24a32f0bdb66b018653672d25ef05394dba845b9
|
File details
Details for the file py_eeive-1.1.0-py3-none-any.whl.
File metadata
- Download URL: py_eeive-1.1.0-py3-none-any.whl
- Upload date:
- Size: 10.5 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 |
48eab9b16c4a24481ee8b137fb8cb93228e5530e19321f92bf5acc6870087f19
|
|
| MD5 |
544413e624015bf72e688f995d422cd2
|
|
| BLAKE2b-256 |
d6908521eb490227a47d78ace754a2d25376e6a7eaaa1b9229b3a9a16cab1ebc
|