基于异步的任务队列。
Kohlrabi的Python项目详细描述
kohlrabi是python应用程序的异步任务队列。它运行 在服务器上,并与任何现有的应用程序相匹配 在Python3.3或更高版本上运行。它允许轻松地转换 应用程序到异步兼容部件,而不影响任何正常 封锁代码。
安装
pypi上提供kohlrabi以方便安装:
pip install kohlrabi
或者,您可以直接从github安装它:
pip install https://github.com/SunDwarf/Kohlrabi.git@master
用法
kohlrabi分为两部分:客户机和服务器。
一个对象由双方共享,应该在 主文件。
kh=kohlrabi.Kohlrabi()
运行服务器时,必须在 命令行上的格式:
kohlrabi-server yourapp.mainfile:kh
位于:前面的第一部分表示
模块;如果要导入它,将如何加载它。第二次
part表示先前创建的kohlrabi对象。
然后加载kohlrabi服务器,并在
服务器端。
在应用程序代码中,使用kohlrabi非常简单。
创建任务
要创建任务,只需用kohlrabi任务装饰函数 装饰工。
@kh.taskdefhello():print("Hello, world!")
然后,在main方法(或__name__check)中,将任务调用为 如果这是一个函数。
if__name__=="__main__":hello()
如果您检查服务器进程的控制台,它将打印 Hello, world!。
更高级的任务
一个更高级任务的例子是添加任务。
@kh.taskdefadd(a,b):returna+b
在主方法中,使用所选参数调用add任务:
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.taskdefadd_two(a):returna+2@kh.taskdefget_four():four=yield fromadd_two(2)returnfour