正在监视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 Android studio在应用程序中自动添加错误权限   java如何转换“javafx”。场景形象Image@1a3d58b'到正常的文件路径   java这个程序的流程是什么?请启发我的知识   javafx中按钮的java切换组   void方法中使用的void方法的数组组成?(爪哇)   jsp重定向到Liferay Portlet中的Java Servlet   java在创建反转arraylist的方法时遇到问题   使类(包装映射)在Java的forloop中可用   java将TextInputLayout或任何UI组件从活动传递到DialogFragment   java在启动SpringBootApplication时捕获异常   java如何实现像playstore应用程序那样的向下滚动隐藏操作栏?   java如何获得pom文件的完全解析模型?   在Java中将字节数组转换为字符串并返回后得到错误的结果   java数学解析器令牌结构   java是默认的Hibernate(5.2.5)会话级缓存终止性能?