一个基于asyncio的任务队列。
项目描述
Kohlrabi 是一个适用于Python应用程序的异步任务队列。它运行在Redis服务器之上,与任何在Python 3.3或更高版本上运行的现有应用程序兼容。它允许轻松地将应用程序的某些部分转换为与asyncio兼容的部分,而不会影响任何正常的阻塞代码。
安装
Kohlrabi可在PyPI上轻松安装
pip install kohlrabi
或者,您可以直接从GitHub安装它
pip install https://github.com/SunDwarf/Kohlrabi.git@master
用法
Kohlrabi包含两部分 - 客户端和服务器。
两方共享一个单一的对象,应在您的主文件中定义。
kh = kohlrabi.Kohlrabi()
在运行服务器时,必须在命令行上以特定格式指定此对象
kohlrabi-server yourapp.mainfile:kh
冒号前的第一部分代表模块的 导入路径;如果您要导入它,则如何加载它。第二部分代表之前创建的Kohlrabi对象。
这将加载Kohlrabi服务器,并在服务器端加载任务。
在您的应用程序代码中,使用Kohlrabi非常简单。
创建任务
要创建任务,只需用Kohlrabi任务装饰器装饰一个函数。
@kh.task
def hello():
print("Hello, world!")
然后,在您的main方法(或 __name__ 检查)内部调用该任务,就像它是一个函数一样。
if __name__ == "__main__":
hello()
如果您检查服务器进程的控制台,它将打印 Hello, world!。
更高级的任务
更高级的任务示例可能是加法任务。
@kh.task
def add(a, b):
return a + b
在主方法内部,调用带有所选参数的加法任务
fut = add(1, 2)
这会返回一个ClientTaskResult对象,您可以使用它来获取任务的结果。
print("Added together 1 and 2 to get:", fut.result)
注意,ClientTaskResult.result是阻塞的,会等待任务完成以获取任务的结果。如果您只想等待一定时间,请使用ClientTaskResult.result_with_timeout方法。
print("Added together 1 and 2 to get:", fut.result_with_timeout(1))
任务链式调用
如果您想将任务链式调用,请使用yield from关键字。在服务器端,任务只是一个封装的协程,这意味着您可以使用它就像它是一个协程一样。
@kh.task
def add_two(a):
return a + 2
@kh.task
def get_four():
four = yield from add_two(2)
return four
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
Kohlrabi-1.0.0.tar.gz (6.7 kB 查看哈希值)
构建分发
Kohlrabi-1.0.0.linux-x86_64.tar.gz (12.0 kB 查看哈希值)
Kohlrabi-1.0.0-py3-none-any.whl (8.9 kB 查看哈希值)
关闭
Kohlrabi-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0fad419b1f33ef5787f18aa3891d9269c8d9295ff4df3e48893b32e49e897635 |
|
MD5 | b0f718bed90803b1b566a5ef0a6cb877 |
|
BLAKE2b-256 | 854d9fe2c64d72a594df5281121306192f29b50e18c29fb7ef574ab7ca989a28 |
关闭
Kohlrabi-1.0.0.linux-x86_64.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d9dddbf0432bc82f1a21509a8c81cb52db934ba67c47a1da761f8c32716ea7a1 |
|
MD5 | df5210d49a5c0830d636a9a63a49e43b |
|
BLAKE2b-256 | ff755179669547809d12e199002e505728abee3fd99f0cecd92bcc686f50f3f4 |
关闭
Kohlrabi-1.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 500e6cff1c1cfe62637358ec76a10a2893c5eb7eed1010db6b126202fc79b855 |
|
MD5 | 4d880c2d8c54ceae3a0600e13482c23b |
|
BLAKE2b-256 | fbda753e44c4ce3b9515c9a9de5f4ad75d90da88c2a72168960ffacd957add8a |