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.


Kohlrabi is available on PyPI to install easily:

pip install kohlrabi

Or, you can install it from GitHub directly:

pip install


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.

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__":

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.

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.

def add_two(a):
    return a + 2

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.

Files for Kohlrabi, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size Kohlrabi-1.0.0.linux-x86_64.tar.gz (12.0 kB) File type Dumb Binary Python version any Upload date Hashes View
Filename, size Kohlrabi-1.0.0-py3-none-any.whl (8.9 kB) File type Wheel Python version 3.5 Upload date Hashes View
Filename, size Kohlrabi-1.0.0.tar.gz (6.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page