Skip to main content

In memory task schedule support cron tasks, interval tasks and onetime tasks. Using python's asyncio.

Project description

taskbeat

In memory task schedule support cron tasks, interval tasks and onetime tasks. Using python's asyncio.

Install

pip install taskbeat

Important

More than 1,000,000 60-SECOND-CYCLE tasks may cuase task delay sometimes. The limit is depends on your CPU mostly, you'd better to test to find the limitation on you server before you use it in production.

Python Compatibility

  • Compatible with python3.7 and above.
  • Tested with python3.7, python3.8, python3.9, python3.10, python3.11 and python3.12.

Example 1

import time
import logging
import asyncio

from taskbeat import TaskBeat

_logger = logging.getLogger(__name__)


async def report(beat):
    """It should be showing report every second.

    If it is not showing report every second,
    then your tasks mostly are not fired on time.
    """
    last_counter = 0
    while True:
        delta = beat.event_counter - last_counter
        last_counter = beat.event_counter
        with open("stats.txt", "a", encoding="utf-8") as fobj:
            fobj.write(str(time.time()) + " " + str(delta) + "\n")
        await asyncio.sleep(1)


async def beat_server():
    beat = TaskBeat()
    task = asyncio.create_task(report(beat))
    for i in range(800 * 1000):
        event_id = "cron_{}".format(i)
        await beat.update_cron_task(event_id, "* * * * *")
    while True:
        event_id = await beat.get_event(5)
        if event_id == "cron_1":
            # should be showing every minute
            # see how many seconds a task may daley here
            _logger.info("cron_1=%s", time.time())


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    asyncio.run(beat_server())

Releases

v0.1.0

  • First release.

v0.1.1

  • Fix delete_task problem.

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

taskbeat-0.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

taskbeat-0.1.1-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file taskbeat-0.1.1.tar.gz.

File metadata

  • Download URL: taskbeat-0.1.1.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for taskbeat-0.1.1.tar.gz
Algorithm Hash digest
SHA256 304f20576b07bcf5793680356f3db5ed1094669980369883f08af6b1ef58c267
MD5 caa6f095738e8a28876f48d3240200b7
BLAKE2b-256 1a04370c230ea292a493295936b640e3beb6a3f8f71dd250ea03e118fe6271cf

See more details on using hashes here.

File details

Details for the file taskbeat-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: taskbeat-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for taskbeat-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3c93be073b1a4afeaa199d92ae11d1fc23fb5f507c6b2f0a1f76492ae0f2c843
MD5 505e7883a09dd0c3dde38da2c2585c57
BLAKE2b-256 7514647c1fffc70046f15d8e21c6d897a6ae971fcfa0ac153871be0afc3ddd61

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