Skip to main content

Procrastinate: PostgreSQL-based Task Queue for Python

Deployed to PyPI Documentation Status Continuous Integration Status Coverage Status MIT License Contributor Covenant

Procrastinate is an open-source Python 3.6+ distributed task processing library, leveraging PostgreSQL to store task definitions, manage locks and dispatch tasks. It can be used within both sync and async code.

In other words, from your main code, you call specific functions (tasks) in a special way and instead of being run on the spot, they’re scheduled to be run elsewhere, now or in the future.

Here’s an example

# mycode.py

# Make an app in your code
app = procrastinate.App(connector=procrastinate.AiopgConnector())

# Then define tasks
@app.task(queue="sums")
def sum(a, b):
    with open("myfile", "w") as f:
        f.write(str(a + b))

# Launch a job
sum.defer(a=3, b=5)

# Somewhere in your program, run a worker
worker = procrastinate.Worker(
    app=app,
    queues=["sums"]
)
worker.run()

The worker will run the job, which will create a text file named myfile with the result of the sum 3 + 5 (that’s 8).

Similarly, from the command line:

export PROCRASTINATE_APP="mycode.app"

# Launch a job
procrastinate defer mycode.sum '{"a": 3, "b": 5}'

# Run a worker
procrastinate worker sums

Lastly, you can use Procrastinate asynchronously too:

# Define asynchronous tasks using coroutine functions
@app.task(queue="sums")
async def sum(a, b):
    await asyncio.sleep(a + b)

# Launch a job asynchronously
await sum.defer_async(a=3, b=5)

# Somewhere in your program, run a worker asynchronously
worker = procrastinate.Worker(
    app=app,
    queues=["sums"]
)
await worker.run_async()

There are quite a few interesting features that Procrastinate adds to the mix. You can head to the Quickstart section for a general tour or to the How-To sections for specific features. The Discussion section should hopefully answer your questions. Otherwise, feel free to open an issue.

The project is still quite early-stage and will probably evolve.

Note to my future self: add a quick note here on why this project is named “Procrastinate”.

Where to go from here

The complete docs is probably the best place to learn about the project.

If you encounter a bug, or want to get in touch, you’re always welcome to open a ticket.

Metadata

Release files for procrastinate 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for procrastinate 0.10.0
File Size Uploaded
procrastinate-0.10.0.tar.gz 36.1 kB Details

Release files / procrastinate-0.10.0.tar.gz

Download URL procrastinate-0.10.0.tar.gz
Size 36.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9ae2a87ea0308302341144e943aa05c65408aa407b939a893b372fc9b5335e32
BLAKE2b-256 checksum
How to use checksums
41594b877990d16237305eada2e3b57ed708782ca7b5f4452c80fb9709b3a0e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.0

Release history Release notifications | RSS feed

3.10.0

2 release files

3.9.0

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.3

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.0

2 release files

3.5.3

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.1.0

2 release files

3.0.2

2 release files

3.0.0

2 release files

2.15.1

2 release files

2.15.0

2 release files

2.14.0

2 release files

2.13.2

2 release files

2.13.1

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.29.1

2 release files

0.27.0

2 release files

0.25.2

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.15.2

2 release files

0.15.0

2 release files

0.14.0

1 release file

0.13.0

1 release file

0.12.0

1 release file

0.11.0

1 release file

This release

0.10.0 This release

1 release file

0.9.0

2 release files

0.8.1

1 release file

0.8.0

2 release files

0.7.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page