Skip to main content

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

py_eeive-1.1.0.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_eeive-1.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

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

Hashes for py_eeive-1.1.0.tar.gz
Algorithm Hash digest
SHA256 53b8370e318df413920470a4af0f26fb13d551311898a018fcaac377a848a870
MD5 9d61f87f7fb1953f3e5d2e6a299481b0
BLAKE2b-256 fb37c312c8195a612718122e24a32f0bdb66b018653672d25ef05394dba845b9

See more details on using hashes here.

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

Hashes for py_eeive-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48eab9b16c4a24481ee8b137fb8cb93228e5530e19321f92bf5acc6870087f19
MD5 544413e624015bf72e688f995d422cd2
BLAKE2b-256 d6908521eb490227a47d78ace754a2d25376e6a7eaaa1b9229b3a9a16cab1ebc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page