基于django模型的任务队列。
modelqueue的Python项目详细描述
ModelQueue是基于django模型的apache2授权任务队列。
例如,在appname/models.py:
import modelqueue from django.db import models class Task(models.Model): data = models.TextField() status = modelqueue.StatusField( db_index=True, # ^-- Index for faster queries. default=modelqueue.Status.waiting, # ^-- Waiting state is ready to run. )
在appname/management/commands/process_tasks.py中:
import modelqueue, time from django.core.management.base import BaseCommand from .models import Task class Command(BaseCommand): def handle(self, *args, **options): while True: task = modelqueue.run( Task.objects.all(), # ^-- Queryset of models to process. 'status', # ^-- Field name for model queue. self.process, # ^-- Callable to process model. ) if task is None: time.sleep(0.1) # ^-- Bring your own parallelism/concurrency. def process(self, report): pass # Process task models.
在appname/admin.py中:
class TaskAdmin(admin.TaskAdmin): list_filter = [ modelqueue.admin_list_filter('status'), # ^-- Filter tasks in admin by queue state. ]
ModelQueue是一个危险的项目。这需要一个坏主意,让它变得简单 有效。您可能会后悔将数据库用作任务队列,但是 不会是今天!
推荐信
“我没有为此设计关系数据库系统。”~Edgar Codd
“好吧,至少你在使用事务。”~Jim Gray
“你成功地忽略了排队论中最重要的东西。”~ Agner Erlang
贵公司或网站是否使用ModelQueue?给我们寄一张message来,让我们知道。
功能
- 纯Python
- 完整记录
- 性能问题
- 100%测试覆盖率
- 压力测试时间
- 基于Python3.6开发
- 在Django 1.11上测试
- 在CPython 2.7、3.4、3.5、3.6、PyPy和PyPy3上测试
- 在Linux、Mac OS X和Windows上测试
- 使用Travis CI和Appveyor CI进行测试
快速启动
安装ModelQueue很简单,只要使用pip:
$ python -m pip install modelqueue
您可以使用python的内置帮助访问解释器中的文档 功能:
>>> import modelqueue >>> help(modelqueue)
模型队列许可证
2018 Grant Jenks版权所有
根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。