正在监视Djangan队列扩展的Djangoan作业

django-db-queue-exports的Python项目详细描述


django db队列导出

django-db-queue的扩展,用于监视长时间运行的任务状态。 此扩展的目的是简化长时间运行任务的执行,并允许在执行期间轮询任务状态。

Build Statuspypi release

支持和测试:

  • 迪亚戈2.2
  • django数据库队列1.3.0
  • Python 3.6、3.7和3.8

什么?为什么?在

你是否曾经遇到过这样的情况:你需要运行一个报告,或者给几千个用户发邮件而不阻塞你的主要进程?django-db-queue可以通过使用单独的worker进程和{}队列来完美地处理这一问题。但是,很难确定任务的状态。这个一揽子计划旨在解决这个问题。通过使用预先配置的视图、url和通用任务,您可以使用单个端点来创建新的导出并查询其状态。在

入门

安装

pip install django-db-queue-exports

django_dbq_exports添加到已安装的应用程序中,该应用程序位于设置.py在

^{pr2}$

django_dbq_exports.tasks.export_task添加到中的django dbq JOBS列表设置.py在

JOBS = {
    ...
    'export': {
        'tasks': ['django_dbq_exports.tasks.export_task'],
    },
}

配置url,如下所示:

urlpatterns = [
    ...
    url(r'^export/', include("django_dbq_exports.urls")),
]

记住运行迁移

python manage.py migrate

使用

描述您的出口

export是一个标准的python函数。它必须采用export_params字典参数。这可以用于您的出口所需的任何参数。 导出还可以选择返回一个字符串值,该值将存储在Export.result_reference中。当您需要下载或访问导出结果时,这最适合用于文件路径或url。 下面是一个示例任务:

import random

def generate_example_report(export_params):
    output_file = 'myfile.csv'
    array_length = export_params.get("length", None)
    x = []

    for i in range(array_length if array_length else 99):
        x.append(random.randint(1, 10))

    x.sort()
    with open(output_file, 'w') as f:
        f.write(",".join(str(y) for y in x))

    return output_file

在中配置任务设置.py在

EXPORTS = {
    "my_export": "my_project.tasks.generate_example_report",
}

运行任务

只需使用以下json将{}发送到预先配置的端点。 export_type应该映射到settings.EXPORTS字典中的一个配置键。在

{
    "export_type" : "my_export"
} 

包含由先前创建的导出任务接收的可选参数

{
    "export_type" : "my_export",
    "export_params" : {
        "length": 256
    }
}

查询任务状态

GET具有url参数=的同一端点到POST请求返回的导出id字段。 或者GET同一个端点,没有返回所有导出列表的参数。在

创建自定义视图

如果您不想使用内置视图和url来触发导出,请创建您自己的视图和url!要自己触发导出,只需创建一个导出对象,如下所示:

Export.objects.create(export_type="my_export")

新创建的导出对象将处理django-db-queue作业的创建。在

覆盖优先级

默认情况下,将创建优先级为1的所有导出。这将传递给django-db-queue。如果您想覆盖这个,可以通过POST方法来实现。在

{
    "export_type" : "my_export",
    "priority" : 3
} 

或者直接通过出口创造。在

Export.objects.create(export_type="my_export", priority=3)

行为准则

有关向此存储库投稿时的行为准则,请查看https://www.dabapps.com/open-source/code-of-conduct/

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

推荐PyPI第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配