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如何在片段中使用listView?   java Android Studio:在不同的活动中使用“OnClick”方法?   设置IntelliJ时,java字符未正确显示   如何使用Java解析每个不同键和值的JSON对象?   简单的java AI响应程序?   java更改进程中不确定对话框的颜色   java类型不匹配:无法在eclipse中从双精度转换为整数   java如何理解我的类的属性是否已更改   xml Java Jena API获取另一个类的属性   java在JPanel上缩放和加载地图分幅   java在安卓 studio上使用工具栏的正确方法是什么?   java使用基于iText Core的OpenPdf从pdf页面删除或更新添加的图像图标   JavaFacebookGraphAPI在第一次请求时返回400,在第二次请求时返回200,这两个请求是相同的   java如何在DynamoDB中实现选择和插入项作为一个事务   java如何使用MAVEN运行方法?   (如何)在Java三元运算符语句中捕获异常?   java如何使用Hibernate SchemaExport和BeanValidation约束导出数据库模式?   java如何在weblogic中使用hibernate代替eclipselink?   Java读socketTcp更快