正在监视Djangan队列扩展的Djangoan作业
django-db-queue-exports的Python项目详细描述
django db队列导出
对django-db-queue的扩展,用于监视长时间运行的任务状态。 此扩展的目的是简化长时间运行任务的执行,并允许在执行期间轮询任务状态。
支持和测试:
- 迪亚戈2.2
- django数据库队列1.3.0
- Python 3.6、3.7和3.8
什么?为什么?在
你是否曾经遇到过这样的情况:你需要运行一个报告,或者给几千个用户发邮件而不阻塞你的主要进程?django-db-queue
可以通过使用单独的worker
进程和{
入门
安装
pip install django-db-queue-exports
将django_dbq_exports
添加到已安装的应用程序中,该应用程序位于设置.py在
将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/
- 项目
标签: