基于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进行测试
https://api.travis-ci.org/grantjenks/django-modelqueue.svg?branch=masterhttps://ci.appveyor.com/api/projects/status/github/grantjenks/django-modelqueue?branch=master&svg=true

快速启动

安装ModelQueue很简单,只要使用pip

$ python -m pip install modelqueue

您可以使用python的内置帮助访问解释器中的文档 功能:

>>> import modelqueue
>>> help(modelqueue)

用户指南

对于那些想要更多细节的人,这部分文档描述了 介绍、基准、开发和api。

模型队列许可证

2018 Grant Jenks版权所有

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

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

推荐PyPI第三方库


热门话题
java无法启动应用程序:JNLP错误   java根据用户输入在PreparedStatement中使用setTime()或setNull()   java EJB与同步   java以object为键通过hashmap进行搜索   java中的模10^9+7   针对包含其他对象的对象的java OOP最佳实践   如何将字符串作为HTML代码从Java文件读取到JSP页面?   java我的POM怎么了?“解析表达式..检测到递归表达式循环”   用于Hbase的Mapreduce的java NoSuchMethodError   JAVAlang.SecurityException:权限拒绝:启动意图{act=安卓.Intent.action.MAIN cat=[安卓.Intent.category.LAUNCHER]   数组初始化谜语Java   通过arraylist搜索时的java句柄关联