Skip to main content

A modern, lightweight and robust task manager with a user-friendly interface and a wide range of features, using the low-level asyncio API and more.

Project description

Jobify
Robust task scheduler.


Test Passing Coverage Package version Supported Python versions
CodeQL Dependency Review License: MIT


Documentation: https://theseriff.github.io/jobify/

Jobify is a robust solution that was built from the ground up to handle asynchronous tasks. It offers a clean and modern API that is inspired by leading frameworks.

Key features

  • Routing: There are routers like in fastAPI/Starlette/Aiogram.
  • Schedule: For cron, add two extra optional fields, * * * * * * *, for the second interval.
  • Lifespan: The lifespan of the application is similar to that of FastAPI/Starlette.
  • Middleware: Middleware such as fastAPI/Starlette/Aiogram.
  • Exception Handling: Exception handling using fastAPI/Starlette.

Quick Start

Install Jobify from PyPI:

pip install jobify

Here is a simple example of how to schedule and run a job:

import asyncio
from datetime import datetime, timezone
from zoneinfo import ZoneInfo

from jobify import Jobify


UTC = ZoneInfo("UTC")
# 1. Initialize Jobify
app = Jobify(tz=UTC)


@app.task(cron="* * * * * * *")  # Runs every seconds
async def my_cron() -> None:
    print("Hello! cron running every seconds")


@app.task
def my_job(name: str) -> None:
    now = datetime.now(tz=UTC)
    print(f"Hello, {name}! job running at: {now!r}")


async def main() -> None:
    # 4. Run the Jobify application context
    async with app:
        run_next_day = datetime.now(tz=UTC) + timedelta(days=1)
        job_at = await my_job.schedule("Connor").at(run_next_day)
        job_delay = await my_job.schedule("Sara").delay(20)

        await job_at.wait()
        await job_delay.wait()

        # Or
        # It is blocked indefinitely because the cron has infinite planning.
        # await app.wait_all()


if __name__ == "__main__":
    asyncio.run(main())

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

jobify-0.2.0.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

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

jobify-0.2.0-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

File details

Details for the file jobify-0.2.0.tar.gz.

File metadata

  • Download URL: jobify-0.2.0.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jobify-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4af0528c64ec32e34910ce16170a0a617fe65a8d894cf3f1fb3da738f6b49f23
MD5 24e9db41d61aad2f1a3f15ef9036d5d4
BLAKE2b-256 5225c70c9e466a8fed311c65f8e7106dc7960db5121b1f916d27841e3b1ae8d9

See more details on using hashes here.

File details

Details for the file jobify-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: jobify-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 42.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jobify-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d02836b27f9ca0ebcc9961525393c892a6188761f0fbf43f65492ef9b9fe0ac0
MD5 6b0df7e0b2d9fa35671b48975a31a195
BLAKE2b-256 f79d5fd94cdf59f056103de81c457254716ffb90d27e134a798a38dedd24aa5b

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