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.6.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

pocwatchdog-1.1.6-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pocwatchdog-1.1.6.tar.gz
  • Upload date:
  • Size: 11.5 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.6.tar.gz
Algorithm Hash digest
SHA256 45d8e1d3231673f53f513ede13aad3d6d7e8f5ed70a05e0d78595e9ca8047a8a
MD5 ca7d15a7c992e8b9341a5012f5cc91b6
BLAKE2b-256 a37e457ad934c00574558d1b4e33f3f8cff5728848615ae03b178ec06e7dffcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pocwatchdog-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.4 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f904df233b560f5aad41cc4ebfddea3fbf41dec9b010b39b8293c83bda6ff56f
MD5 3f12cd8139a5cd9e17eaf7618e1e9509
BLAKE2b-256 42f769a34eb152e8f167d9336c8778a0eae64f159abea3714e85332faf1e6711

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