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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for Kohlrabi-1.0.0.linux-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9dddbf0432bc82f1a21509a8c81cb52db934ba67c47a1da761f8c32716ea7a1 |
|
MD5 | df5210d49a5c0830d636a9a63a49e43b |
|
BLAKE2b-256 | ff755179669547809d12e199002e505728abee3fd99f0cecd92bcc686f50f3f4 |