django-db-queue的扩展,用于监控长时间运行的作业
项目描述
django-db-queue-exports
django-db-queue的扩展,用于监控长时间运行的任务状态。这个扩展的目的是简化长时间运行任务的执行,并允许在执行过程中轮询任务状态。
支持和测试
- 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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ce96ae0e7de882e98ae28127abb6fb68c860f38d7460b58de61f8d4ebd7a3156 |
|
MD5 | 7468a27f9c03c5332053772c2b4468ea |
|
BLAKE2b-256 | 3dd1fd1453303fccd3cacde47be69fbaa1bdf71e5678f4d60851a517f8253473 |
django_db_queue_exports-0.0.3-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9717701b84460a84ef102045624fe2ec6b68ca551b9bdea42b50cb345e1af4e9 |
|
MD5 | 747b0fab50415f31c75f77c77cc5c389 |
|
BLAKE2b-256 | 6be803e4c10480b4b6be38e9b62bba3adc85203c36b78957783a3c21cccbf1c2 |