kamma是一个非常简单的任务文件队列
kamma的Python项目详细描述
kamma是一个非常简单的任务文件队列,它保存任务及其所需的数据。它还有一个处理所有挂起任务的辅助进程。
动机
目前,由于多种原因,本地磁盘访问是一种被低估的资源,然而存储的数据即使在断电后也总是可用的。相比之下,网络资源或远程第三方并不总是准备就绪。为此,我开发了kamma以便将dependent任务与远程服务的痛苦隔离开来。kamma将尝试永远按照队列顺序处理所有挂起的任务。
限制
- 到^ {Tt1} $任务可以最大化排队。
- 所有任务的参数都应该可以通过json序列化
- 不建议用于高性能方案。
安装
简单到:
^{tt2}$
示例
importkamma# python 2 and 3 compatibility issuetry:input=raw_inputexceptNameError:pass# kamma workerapp=kamma.Worker()# registering fibonacci callback in kamma app@app.task_callback(timeout=5,retry_wait=kamma.wait_fixed(1),retry_stop=kamma.stop_after_attempt(1))deffibonacci(n,level=0):result=1ifn<0orn>100:raisekamma.AbortTask("n has to be 0 <= n <= 100")ifn>1:result=fibonacci(n-1,level=level+1)+fibonacci(n-2,level=level+1)iflevel==0:print("*** RESULT: fibonacci of '{}' is '{}' ***".format(n,result))returnresultif__name__=="__main__":# start listening for incoming tasksapp.run_async()print("Enter the value of the fibonacci you want to compute, 0 to exit")n=1whileTrue:n=int(input(""))ifn==0:break# add new fibonacci taskapp.push_task(fibonacci,n=n)app.stop()
这里的完整示例:examples/example.py