一种服务,用于将具有到期时间的优先包放置在队列中,并将包通知给消费者
kamikaze的Python项目详细描述
一种服务,用于将具有到期时间的优先包放置在队列中,以及 通知消费者包装
工作原理
此服务监视redis排序集并调用使用者函数 当新包到达或当前最高优先级包到达时 到期。使用者函数可以是常规的python函数,也可以是 asyncio coroutine。
如何安装
pip install kamikaze
消费者功能
使用者函数是在新消息 排在队伍的最前面。函数的格式应为:
def consumer_function(package, *args): """ Does stuff with packages and optional args passed from the command line """
长期运行的消费者功能
如果使用者函数长时间运行,那么它应该能够控制 如果可能的话。否则神风服务队会很慢 对队列中的更改做出反应。
快速运行的消费者功能
如果消费者功能很快,就不需要屈服 控制主回路直到完成。
运行服务
通过运行以下命令启动服务:
kamikaze service <consumer-function-path> --consumer-function-args
consumer函数应该是python协程的完整路径。 它必须在您的$PYTHONPATH中。
为选项的完整列表提供--help标志。
工具
推动包裹
使用push命令将包添加到队列:
kamikaze push <payload> <ttl> <priority>
移除包
使用remove命令从队列中删除包:
kamikaze remove <payload>
在队列中列出包
使用list命令列出队列中的所有包:
kamikaze list
运行示例
产生示例
一个屈服函数的例子可以这样运行:
kamikaze service example_consumer.consumer.yielding_consumer_func
阻塞示例
阻塞函数的示例可以如下运行:
kamikaze service example_consumer.consumer.blocking_consumer_func