Skip to main content

A pocwatchdog package for security monitoring

Project description

pocwatchdog

中文版

pocwatchdog is a cross-platform Python task scheduler that supports scheduled task execution and email notifications.

Features

  • Easy to use
  • Cross-platform support (Windows, Linux, macOS)
  • Flexible task scheduling
  • Configurable email notifications (success and failure)
  • Automatic SMTP server selection
  • Detailed error reporting

Installation

Install pocwatchdog using pip:

pip install -U pocwatchdog

Usage

  1. Import the pocwatchdog module:
import pocwatchdog
  1. Define your task:
def your_task():
    print("Task is running...")
  1. Run the task scheduler:
pocwatchdog.run(
    job=your_task, 
    schedule_time="08:00",
    sender=None,  # Default is not to send
    password=None,  # Default is not to send
    recipients=[],  # Default is not to send
    smtp_server='smtp.exmail.qq.com',  # Default is auto-select
    smtp_port=465,  # Default is auto-select
    smtp_ssl=True,  # Default is auto-select
    success_subject="success",  # Default value
    success_body="success",  # Default value
    failure_subject="failure",  # Default value
    failure_body="task failure: error_message",  # Default value
    notify_success=True,  # Default value
    notify_failure=True  # Default value
)
  • schedule_time: Execution time

If it's a number, the default unit is seconds, and the task will be executed every schedule_time seconds. For example, 120 means execute every 2 minutes.

If it's a string, it's treated as a time point in the format HH:MM. For example, 08:00 means execute once a day at this time.

If it's a list, it's treated as multiple time points. For example, ["08:00", "12:00", "16:00"] means execute once a day at these times.

If it's a dictionary, the keys are interpreted as follows:

If the key is a number, it's treated as a date, and the corresponding value follows the above number, string, or list interpretation.

If the key is a string, it's treated as a day of the week (e.g., for Monday, supported formats include: 1, monday, Monday, MONDAY, mon, mon., m, and so on), and the corresponding value follows the above number, string, or list interpretation.

For example, the following schedule executes at 8:00 on the 1st, at 8:00, 12:00, and 16:00 on the 2nd, every hour on the 3rd, and at 8:00 every Monday:

schedule_time = {
    1: "08:00",
    2: ["08:00", "12:00", "16:00"],
    3: 216000,
    "1": "08:00",
}
  • sender: Sender's email address. If you don't want to send emails, you can leave it unconfigured.
  • password: Sender's email password. If you don't want to send emails, you can leave it unconfigured.
  • recipients: List of recipient email addresses. If you don't want to send emails, you can leave it unconfigured.
  • smtp_server: SMTP server address. Default value is auto-select.
  • smtp_port: SMTP server port. Default value is auto-select.
  • smtp_ssl: Whether to use SSL. Default value is auto-select.
  • success_subject: Email subject for successful tasks. Default value provided.
  • success_body: Email content for successful tasks. Default value provided.
  • failure_subject: Email subject for failed tasks. Default value provided.
  • failure_body: Email content for failed tasks. The error message will replace error_message. Default value provided.
  • notify_success: Whether to send notifications for successful tasks (True/False). If sender, password, and recipients are empty, an exception will be raised.
  • notify_failure: Whether to send notifications for failed tasks (True/False). If sender, password, and recipients are empty, an exception will be raised.
import pocwatchdog

def your_task():
    print("Task is running...")

pocwatchdog.run(
    job=your_task, 
    schedule_time="08:00",
    sender='your_email@example.com',
    password='your_password',
    recipients=['recipient1@example.com', 'recipient2@example.com'],
    smtp_server='smtp.exmail.qq.com',
    smtp_port=465,
    smtp_ssl=True,
    success_subject="Task Successful",
    success_body="The task has been executed successfully.",
    failure_subject="Task Failed",
    failure_body="Task execution failed. Error message: error_message",
    notify_success=True,
    notify_failure=True
)

Testing

Run the test cases:

python -m unittest tests/test_pocwatchdog.py

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

pocwatchdog-1.1.4.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

pocwatchdog-1.1.4-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file pocwatchdog-1.1.4.tar.gz.

File metadata

  • Download URL: pocwatchdog-1.1.4.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for pocwatchdog-1.1.4.tar.gz
Algorithm Hash digest
SHA256 90eee32e92001f9f6ef6e2a4b2cc7476dbb091617596cd16cd4f1d5f04f357be
MD5 9db7dd85057f6f15df32559c93d59652
BLAKE2b-256 f5f98680897bbc17bea1e035cf75b82084a8c35827400d5e0e8d18682d43a505

See more details on using hashes here.

File details

Details for the file pocwatchdog-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: pocwatchdog-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for pocwatchdog-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aa4d8cf4d56441ffcd14af1661e0c3cae92433b7ec7ba7a51b68176cf0c1f21d
MD5 042103890c4dc651bb084be1243beb46
BLAKE2b-256 555dd1375c6d5cef406e42cfbdc861698a8d7dbaf6dc537738d4fc7eefd20879

See more details on using hashes here.

Supported by

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