Skip to main content

Code-monitoring SDK for SteadyCron — wrap your scheduled jobs with @steadycron.job to send start/success/fail pings automatically.

Project description

SteadyCron Python SDK

steadycron is the official Python code-monitoring SDK for SteadyCron.

Wrap your scheduled jobs with @steadycron.job and SteadyCron will:

  • Know when a job started, succeeded, or failed
  • Alert you when a job doesn't run on time (missed heartbeat)
  • Detect stuck runs that start but never finish

The monitor must already exist — create it in the Dashboard, via YAML manifest, or Terraform. The SDK never creates monitors. For a fully code-driven workflow, declare the monitor in your Terraform configuration or YAML manifest and reference it from your application by key: the cron schedule, alert rules, and SDK instrumentation all live in the same repository.


Installation

pip install steadycron

No runtime dependencies — uses Python's standard library only.


Quick start

import steadycron

steadycron.api_key = "sc_ro_..."  # read-only key; or set STEADYCRON_API_KEY env var

@steadycron.job("nightly-db-backup")
def backup():
    run_backup()   # start on entry, success on return, fail (+re-raise) on exception

Context manager

with steadycron.monitor("nightly-db-backup"):
    run_backup()

Manual pings

m = steadycron.Monitor("nightly-db-backup")
m.ping()                           # bare success heartbeat
m.ping(state="start")
m.ping(state="fail", message="disk full")

Authentication

The SDK uses a read-only API key to resolve monitor keys to ping tokens at startup. Create one in:

SteadyCron Dashboard → Settings → API keys → New key → Scope: Read-only

Set it via:

  • Environment variable: STEADYCRON_API_KEY=sc_ro_...
  • Module attribute: steadycron.api_key = "sc_ro_..."
  • steadycron.configure(api_key="sc_ro_...")

Configuration

import steadycron

steadycron.configure(
    api_key="sc_ro_...",
    environment="production",   # optional — sent on every ping
    capture_errors=True,        # include exception message on fail pings (default False)
    ping_timeout=5.0,           # seconds (default 5)
    resolve_cache_ttl=3600.0,   # seconds (default 3600 = 1 hour)
)
Setting Default Env var fallback
api_key None STEADYCRON_API_KEY
api_url https://api.steadycron.com STEADYCRON_API_URL
ping_url https://ping.steadycron.com STEADYCRON_PING_URL
environment None STEADYCRON_ENVIRONMENT
capture_errors False
ping_timeout 5.0 s
resolve_cache_ttl 3600.0 s

How it works

  1. On first use, the SDK calls GET /api/monitors/resolve?key=<your-key> with the read-only API key to retrieve the ping token. The token is cached for 1 hour (configurable).
  2. All pings are fire-and-forget: a bounded ping_timeout is applied; any error is logged via logging.getLogger("steadycron") at WARNING and discarded. They never raise.
  3. Resolution errors (404 unknown key, 409 ambiguous key, wrong kind) raise immediately — they indicate misconfiguration.
  4. On exception, a fail ping is sent and the original exception is re-raised unchanged.

Direct / token mode (hardened path)

If you cannot use API key resolution (e.g. air-gapped environments), set the ping token directly:

steadycron.monitors = {"nightly-db-backup": "hRkmWz8oZtlMFzvTAUdnRE"}

The token is visible via Job detail → Code monitoring → Reveal ping token in the Dashboard.


Reliability contract

  • Ping failures are never raised. A transport error, timeout, or non-2xx response is logged and discarded.
  • Resolution errors always raise. A 404 or 409 from the resolve endpoint raises on first use; fix the key or remove the decorator.
  • Original exceptions pass through unchanged. The decorator and context manager do not wrap exceptions.
  • No runtime dependencies. The SDK uses urllib.request from the standard library.

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

steadycron-0.1.0.tar.gz (41.2 MB view details)

Uploaded Source

Built Distribution

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

steadycron-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file steadycron-0.1.0.tar.gz.

File metadata

  • Download URL: steadycron-0.1.0.tar.gz
  • Upload date:
  • Size: 41.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for steadycron-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1d085cae83550603356ff8970fc96ae3d5632ea940c27f581a60aba8908a5f0d
MD5 a49d3e7e9f5ae024e0e09f961cd7aa22
BLAKE2b-256 c14e6888e5c5da917cdbbb2e695bf3efd5865d6ec7f06b1a044e48aec6096401

See more details on using hashes here.

File details

Details for the file steadycron-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: steadycron-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for steadycron-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d330dfc54b28f507f2c2c0f9c7abcdc10420081daa9458597d1f72151aedac0
MD5 d58b6cbac76e5ab2421aae56c5c014c5
BLAKE2b-256 097a08ccc9cf263a584cf50d3414b6e7b6107138d197ede4d5f0226eb64fe147

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