qamasu是一个尊重schwartz的作业队列系统。
qamasu的Python项目详细描述
qamasu是一个尊重schwartz的jobqueue系统。
适合负载均衡。
使用乐观锁实现。
要求
- python=2.6
- django>;=1.0
Python3需要django1.5
用法
把Qamasu准备好!
qamasu是一个django应用程序。
您需要将qamasu添加到您或新django项目的已安装的应用程序中。
和//manage.py syncdb//。
写下你的工人。
以秒为单位定义grab_for,这是工作线程为某项工作捕获的最长时间。
定义def安全工作(经理,工作):这是您需要的工作。
有关详细信息,请参见workers目录中的sample worker。
注册
你需要增加工人的能力。
如果不存在,则将数据插入到数据库表中。
>>> from qamasu import Qamasu >>> qamasu = Qamasu([]) >>> qamasu.register_func('workers.random_wait')
排队!
一旦功能注册到qamasu,就可以将作业排队。
添加数百个队列。
>>> from qamasu import Qamasu >>> from random import uniform >>> qamasu = Qamasu(['workers.random_wait',]) >>> for x in xrange(1,500): arg = dict(random_number=uniform(1,5)) qamasu.enqueue('workers.random_wait', arg)
添加最高优先级队列。:
>>> qamasu.enqueue('workers.random_wait', dict(random_number=uniform(1,5)), priority=1)
工作!工作!工作!
处理排队作业。
- 用可用性实例化qamasu。
- 调用工作方法。此方法中有无限循环。
工作方法处理队列为fifo。
>>> from qamasu import Qamasu >>> qamasu = Qamasu(['workers.random_wait',]) >>> qamasu.work()
如果你倾向于按优先级处理工作,请使用工作优先级排序方法。
>>> from qamasu import Qamasu >>> qamasu = Qamasu(['workers.random_wait',]) >>> qamasu.work_prioritizing()