Skip to main content

An asyncio-based task queue.

Project description

Kohlrabi is a asynchronous task queue for Python applications. It runs on top of a Redis server, and fits in with any existing application that runs on Python 3.3 or higher. It allows easy converting of parts of applications to asyncio-compatible parts, without affecting any normal blocking code.

Installation

Kohlrabi is available on PyPI to install easily:

pip install kohlrabi

Or, you can install it from GitHub directly:

pip install https://github.com/SunDwarf/Kohlrabi.git@master

Usage

Kohlrabi comes in two parts - the client and the server.

A single object is shared by both sides, and should be defined in your main file.

kh = kohlrabi.Kohlrabi()

When running the server, this object must be specified in a specific format on the command line:

kohlrabi-server yourapp.mainfile:kh
The first part before the : represents the import path of the module; how you would load it if you were to import it. The second part represents the Kohlrabi object created previously.
This will then load the Kohlrabi server, and load the tasks on the server-side.

In your app code, using Kohlrabi is incredibly simple.

Creating tasks

To create a task, simply decorate a function with Kohlrabi task decorator.

@kh.task
def hello():
    print("Hello, world!")

Then, inside your main method (or __name__ check), call the task as if it was a function.

if __name__ == "__main__":
    hello()

If you check the console of the server process, it will have printed Hello, world!.

More advanced tasks

An example of a more advanced task would be an addition task.

@kh.task
def add(a, b):
    return a + b

Inside your main method, call the add task with the parameters chosen:

fut = add(1, 2)

This returns a ClientTaskResult object, which you can use to get the result of the task.

print("Added together 1 and 2 to get:", fut.result)

Note that ClientTaskResult.result is blocking, and will wait until the task has finished to get the result of the task. If you wish to only wait a certain amount of time, use the ClientTaskResult.result_with_timeout method.

print("Added together 1 and 2 to get:", fut.result_with_timeout(1))

Chaining tasks

If you wish to chain tasks together, use the yield from keywords. On the server side, a task is just a wrapped coroutine, meaning you can use it as if it was a coroutine.

@kh.task
def add_two(a):
    return a + 2

@kh.task
def get_four():
    four = yield from add_two(2)
    return four

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

Kohlrabi-1.0.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distributions

Kohlrabi-1.0.0.linux-x86_64.tar.gz (12.0 kB view details)

Uploaded Source

Kohlrabi-1.0.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file Kohlrabi-1.0.0.tar.gz.

File metadata

  • Download URL: Kohlrabi-1.0.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Kohlrabi-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0fad419b1f33ef5787f18aa3891d9269c8d9295ff4df3e48893b32e49e897635
MD5 b0f718bed90803b1b566a5ef0a6cb877
BLAKE2b-256 854d9fe2c64d72a594df5281121306192f29b50e18c29fb7ef574ab7ca989a28

See more details on using hashes here.

File details

Details for the file Kohlrabi-1.0.0.linux-x86_64.tar.gz.

File metadata

File hashes

Hashes for Kohlrabi-1.0.0.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 d9dddbf0432bc82f1a21509a8c81cb52db934ba67c47a1da761f8c32716ea7a1
MD5 df5210d49a5c0830d636a9a63a49e43b
BLAKE2b-256 ff755179669547809d12e199002e505728abee3fd99f0cecd92bcc686f50f3f4

See more details on using hashes here.

File details

Details for the file Kohlrabi-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for Kohlrabi-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 500e6cff1c1cfe62637358ec76a10a2893c5eb7eed1010db6b126202fc79b855
MD5 4d880c2d8c54ceae3a0600e13482c23b
BLAKE2b-256 fbda753e44c4ce3b9515c9a9de5f4ad75d90da88c2a72168960ffacd957add8a

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