Skip to main content

A simple worker library in Python

Project description

Workraft

Description

Workraft is a lightweight, highly opionated, simple worker library in Python with only a Postgres database as the single source of truth; no Redis, RabbitMQ, or any other external dependencies.

Installation

Run the command

pip install workraft

Usage

First, you need to setup the database. The following environment variables are required:

  • WK_DB_HOST - The database host
  • WK_DB_PORT - The database port
  • WK_DB_USER - The database user
  • WK_DB_PASS - The database password
  • WK_DB_NAME - The database name

Then, you need to setup the database using the command below:

python3 -m workraft build_stronghold

To create a worker, you need to give it some tasks to perform. For example:

import time

from workraft.core import Workraft


workraft = Workraft()


@workraft.task("simple_task")
def simple_task(a: int, b: int, c: int) -> int:
    time.sleep(1)
    #    time.sleep(random.randint(10, 20))
    raise ValueError("Random error!")
    return a + b + c

To run a worker, run the command below:

python3 -m workraft peon --workraft_path=example.workraft

To send a task to the worker, you can use the following example:

async def main():
    a = random.randint(1, 100)
    b = random.randint(1, 100)
    c = random.randint(1, 100)

    await workraft.send_task_async(
        "simple_task",
        get_db_config(),
        [a, b],
        task_kwargs={"c": c},
        retry_on_failure=True,
    )

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

And that's it. Use any database viewer to see the tasks and their status.

License

MIT

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

workraft-0.4.7.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

workraft-0.4.7-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file workraft-0.4.7.tar.gz.

File metadata

  • Download URL: workraft-0.4.7.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.0

File hashes

Hashes for workraft-0.4.7.tar.gz
Algorithm Hash digest
SHA256 affa8f3d1a084933d0846c2cf75786f9c6e50fe5af855a3ae4a2b6ff71d3ea52
MD5 10794fd511bfc322a2f865d82eb5999f
BLAKE2b-256 330c3e432c9ea2e359f166b8f406df36ede770b111c1ed1a2ce1eded1cd23528

See more details on using hashes here.

File details

Details for the file workraft-0.4.7-py3-none-any.whl.

File metadata

  • Download URL: workraft-0.4.7-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.0

File hashes

Hashes for workraft-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2419cff4956dcfbaaafe521f6f4fbeb0e25682a745510b7a0f1a7f215f763806
MD5 56ac8c0659a37f9e012ed6575a0578ca
BLAKE2b-256 a582b365c47c968c70240b063d57a7e09a6aed4f0e58d7c5238acb9969382f1e

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