An asyncio-based task queue.
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 https://github.com/SunDwarf/Kohlrabi.git@master
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:
In your app code, using Kohlrabi is incredibly simple.
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))
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
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|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 hashes|
|Filename, size Kohlrabi-1.0.0-py3-none-any.whl (8.9 kB)||File type Wheel||Python version 3.5||Upload date||Hashes View hashes|
|Filename, size Kohlrabi-1.0.0.tar.gz (6.7 kB)||File type Source||Python version None||Upload date||Hashes View hashes|
Hashes for Kohlrabi-1.0.0.linux-x86_64.tar.gz