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)

工作!工作!工作!

处理排队作业。

  1. 用可用性实例化qamasu。
  2. 调用工作方法。此方法中有无限循环。

工作方法处理队列为fifo。

>>> from qamasu import Qamasu
>>> qamasu = Qamasu(['workers.random_wait',])
>>> qamasu.work()

如果你倾向于按优先级处理工作,请使用工作优先级排序方法。

>>> from qamasu import Qamasu
>>> qamasu = Qamasu(['workers.random_wait',])
>>> qamasu.work_prioritizing()

小心!

MySQL后端的

在使用innodb时,必须在使用qamasu之前将worker的事务隔离级别设置为readcommitted。

>>> from django.db import connection
>>> from qamasu import Qamasu
>>> connection.cursor().execute('set session transaction isolation level read committed')
>>> qamasu = Qamasu(['workers.random_wait',])
>>> qamasu.work()

或者必须将事务隔离级别设置为read committed。这是全球性的环境,而且很危险。

[mysqld]
transaction-isolation=Read-Committed

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在AlertDialog builder标题右侧放置图标   安装weblogic server12时发生java获取错误。1在windows 10上   java无法导入:安卓。支持v7。小装置。Android Studio中的RecyclerView   java Android应用程序等待通知奇怪行为   java如何比较ArrayList中的整数元素?   java Quartz属性不会触发Quartz作业   java轻松地将许多JavaFX属性绑定到UINode   Maven插件管理器导致java错误消息的原因是什么?   JAXB解组错误后java文件被阻止   java如何在spark kafka流中创建消费者组并将消费者分配给消费者组   java Gps lat&long随机显示非常不准确的结果   java使用assest文件夹文件在Android上执行shell命令   java如何在客户端使用javascript提取文本   java扩展描述的distincts之和   java重写默认Spring数据REST配置   java SQL未命名参数语法   二进制搜索任务的java真实解决方案   java在一个多模块多数据源项目中,用什么正确的方式来指示将哪个数据源注入我的DAOs?