Skip to main content

Library for sending pulses to a process monitoring server

Project description

Python Heartbeat Library

A lightweight utility for sending regular “pulses” (heartbeats) to an HTTP endpoint. These pulses confirm that your main script is running. If the main script stops, the heartbeat halts too—making it easy to detect failures. In addition to the original always-on mode, you can now schedule heartbeats to run only during configurable business hours via APScheduler.

Installation

You can install the Python Heartbeat Library using pip:

pip install pyheartbeat

Note: APScheduler is already included as a dependency, so business-hours scheduling works out of the box.

Example

  1. Legacy Mode (Always On) Use this mode when you want a heartbeat thread that simply runs at a fixed interval, 24/7.
======================================================================================================
from pyheartbeat import setUrl, heartbeat, killHeartbeat

# 1. Point to your monitoring endpoint
setUrl("https://your-endpoint/heartbeat")

# 2. Start the heartbeat thread
heartbeat(
    interval=600,                  # seconds between pulses
    name="scrapper-x",             # logical process name
    description="process monitor", # human-readable description
    additional_info="production",  # any extra metadata
    show_response=True,            # print HTTP status codes
    show_logs=True,                # print thread start/stop logs
    api_token="YOUR_API_TOKEN"     # optional authentication token
)

# ... your main application logic ...

# 3. Stop the heartbeat when you’re done
killHeartbeat(disable_schedule = False)
======================================================================================================
  1. Business-Hours Mode (New) Schedule heartbeats to start and stop automatically each day within a configurable business-hours window.
======================================================================================================
from pyheartbeat import (
    setUrl, setBusinessHours, businessHeartbeat,
    killHeartbeat, shutdownScheduler
)

# 1. Configure the endpoint
setUrl("https://your-endpoint/heartbeat")

# 2. Set business hours window (09:00–18:00 Mon–Fri)
setBusinessHours(
    start_hour=9,
    end_hour=18,
    days='mon-fri',
    tz='America/Sao_Paulo'
)

# 3. Schedule the heartbeat to run only during business hours
businessHeartbeat(
    interval=600,                   # send a pulse every 600 seconds
    name="scrapper-x",              # logical name of the process
    description="process monitor",  # human-readable description
    additional_info="production",   # any extra metadata
    show_response=True,             # print HTTP status codes
    show_logs=True,                 # print thread start/stop logs
    api_token="YOUR_API_TOKEN"      # optional authentication token
)

# ... your main script runs here ...

# 4a. Stop only the heartbeat thread (it will automatically restart tomorrow)
killHeartbeat()

# 4b. Stop the heartbeat thread and disable automatic restart tomorrow
killHeartbeat(disable_schedule=True)
======================================================================================================

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

pyheartbeat-0.0.7.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

pyheartbeat-0.0.7-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file pyheartbeat-0.0.7.tar.gz.

File metadata

  • Download URL: pyheartbeat-0.0.7.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for pyheartbeat-0.0.7.tar.gz
Algorithm Hash digest
SHA256 3652ceccbf5e5e243cd8d0f5eea61a0e148bc5c05ecf47983776a584487b8e7a
MD5 a4325005ec4194c864cbda820c7ab654
BLAKE2b-256 12b63bcaa56a785b7f5053bca3d6afde1f35cab0340ddc3f2398edc1c7404738

See more details on using hashes here.

File details

Details for the file pyheartbeat-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: pyheartbeat-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for pyheartbeat-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 eda753301a460d75d7cec9c9ae47a8c2b0f6fe3844b809c8f9e3a0a66e18865f
MD5 91e934020d69e0b6d19f41f0710106f1
BLAKE2b-256 3797341d93b96d2e8597e356d07a3371d8eec6a726d8b0ead9048bba66ceaaa8

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