跳转到主要内容

django-db-queue的扩展,用于监控长时间运行的作业

项目描述

django-db-queue-exports

django-db-queue的扩展,用于监控长时间运行的任务状态。这个扩展的目的是简化长时间运行任务的执行,并允许在执行过程中轮询任务状态。

Build Status pypi release

支持和测试

  • Django 2.2
  • django-db-queue 1.3.0
  • Python 3.6, 3.7和3.8

是什么以及为什么?

你是否曾经处于需要运行报告或向数千用户发送电子邮件,而不阻塞主进程的情况?django-db-queue可以通过使用单独的worker进程和任务队列来完美地处理这个问题。然而,确定任务状态比较困难。这个包旨在解决这个问题。通过使用预配置的视图、URL和通用任务,你可以使用单个端点来创建新的导出并查询其状态。

入门

安装

pip install django-db-queue-exports

django_dbq_exports添加到settings.py中的已安装应用

INSTALLED_APPS = (
    ...
    'django_dbq_exports',
)

django_dbq_exports.tasks.export_task添加到settings.py中的django-dbq作业列表

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

配置URL,例如

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

请记住运行你的迁移

python manage.py migrate

用法

描述你的导出

导出是一个标准的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

在settings.py中配置你的任务

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

运行任务

简单地使用以下json POST到预配置的端点。 export_type 应该映射到 settings.EXPORTS 字典中的配置键。

{
    "export_type" : "my_export"
} 

带有您之前创建的导出任务接收的可选参数

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

查询任务状态

使用从POST请求返回的导出 id 字段作为url参数值 GET相同的端点。或者不带参数 GET相同的端点以返回所有导出的列表。

创建自定义视图

如果您不想使用内置的视图和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/

项目详情


下载文件

下载您平台上的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

django-db-queue-exports-0.0.3.tar.gz (6.2 kB 查看散列)

上传时间

构建分布

django_db_queue_exports-0.0.3-py3-none-any.whl (26.7 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面