跳转到主要内容

一个基于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 查看哈希值)

上传时间 Python 3

由以下赞助商支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面