python - 如何避免芹菜截断“django_celery_results_taskresult”中的“task_args”文本
问题描述
在我的 Django 项目中,我使用 Celery 异步运行我的任务。
我面临的问题是“”中的“ task_args
”列django_celery_results_taskresult
被截断(即文本后跟省略号)。
例如,我期望“ ”中的整个“ process_4_items
”值task_args
。然而,事实并非如此。我可以在执行中的 Celery worker 的命令提示符中看到相同的截断文本(见下文“ [CELERY WORKER COMMAND PROMPT FOR ONE ITERATION]
”)。
我真的不确定我需要做什么才能获得整个 " " 中的process_4_items
" 值task_args
。"
我在下面详细说明了我认为我需要复制这个项目的所有内容。
最重要的是,当我调试项目并逐行执行时,“ process_4_items
”值的全部内容出现在“ task_args
.”中。
[celeryconfig.py]
broker_url = 'amqp://localhost:5672//'
imports = ('operation_hawkeye.tasks',)
result_backend = 'django-db'
accept_content = ['json']
task_always_eager = False
[views.py]
from celery import group
process_4_items = [
{
"service_id": "7f7962b082cb8da55e01f4f013d8fefbc97948ec03400c93423b050d",
"service_id_unique": "c30ed891987f4d8d3debcaef7edb0f582e6b634f1ebed00fb88f0ec7",
"service_type": "buzz_collect_compare",
"service_file_pf_folder": "",
"service_file_nanonsportsproductivity_folder": "",
"service_file_tba_report": "",
"service_file_buzz_collect_compare": "services/buzzcollect_xml_compare/2021/06/01/file_2_name_Update_COOKINGHD_May_2021_Listin_yWoWXo1.xml",
"service_file_type": "XML 1.0 document, ASCII text",
"service_file_name": "file_2_name_Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml",
"service_file_size": 396557,
"service_status": "In Queue for Upload",
"service_status_remarks": {
"source_information": {
"source_id": "5191",
"source_name": "10NEWS2",
"file_1_name": "Original_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml",
"file_2_name": "Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml"
}
},
"service_creation_date": "2021-06-01T18:18:40.968Z",
"service_owner": "p.premlal@spi-global.com"
},
{
"service_id": "7f7962b082cb8da55e01f4f013d8fefbc97948ec03400c93423b050d",
"service_id_unique": "2edaf2535945992d13b9ee85e908b21cbd520a02642bd7faf7f229bc",
"service_type": "buzz_collect_compare",
"service_file_pf_folder": "",
"service_file_nanonsportsproductivity_folder": "",
"service_file_tba_report": "",
"service_file_buzz_collect_compare": "services/buzzcollect_xml_compare/2021/06/01/file_1_name_Original_COOKINGHD_May_2021_List_P2PlYY7.xml",
"service_file_type": "XML 1.0 document, ASCII text",
"service_file_name": "file_1_name_Original_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml",
"service_file_size": 396409,
"service_status": "In Queue for Upload",
"service_status_remarks": {
"source_information": {
"source_id": "5191",
"source_name": "10NEWS2",
"file_1_name": "Original_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml",
"file_2_name": "Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml"
}
},
"service_creation_date": "2021-06-01T18:18:40.935Z",
"service_owner": "p.premlal@spi-global.com"
}
]
jobs_4 = group(tasks.buzz_collect_compare_main.s(process_4_items))
result_4 = jobs_4.apply_async()
[tasks.py]
@app.task(bind=True)
def buzz_collect_compare_main(self, items):
process_items = items
...
[CELERY WORKER COMMAND PROMPT FOR ONE ITERATION]
[2021-06-01 09:37:29,972: DEBUG/ForkPoolWorker-32] (0.010)
UPDATE
"django_celery_results_taskresult"
SET
"task_id" = 'daca83c1-3297-4e64-8a5e-f4b61aef84e2',
"task_name" = 'operation_hawkeye.tasks.buzz_collect_compare_main',
"task_args" = '([{''service_id'': ''dc30fc45948975044cb00c39a4d5a0db8e28bc34f0b4d52fd4dcddef'', ''service_id_unique'': ''2004e35ae5dcc2586ae5fca16ab8a5b2708ffeca233d3bb234feb347'', ''service_type'': ''buzz_collect_compare'', ''service_file_pf_folder'': '''', ''service_file_nanonsportsproductivity_folder'': '''', ''service_file_tba_report'': '''', ''service_file_buzz_collect_compare'': ''services/buzzcollect_xml_compare/2021/06/01/file_2_name_Update_COOKINGHD_May_2021_Listin_726wZgI.xml'', ''service_file_type'': ''XML 1.0 document, ASCII text'', ''service_file_name'': ''file_2_name_Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml'', ''service_file_size'': 396557, ''service_status'': ''In Queue for Upload'', ''service_status_remarks'': ''{"source_information": "{\"source_id\": \"27227\", \"source_name\": \"COOKINGHD\", \"file_1_name\": \"Original_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml\", \"file_2_name\": \"Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml\"}"}'', ''service_creation_date'': ''2021-06-01T09:36:56.825Z'', ''service_owner'': ''p...'', ...],)',
"task_kwargs" = '{}',
"status" = 'PROGRESS',
"worker" = 'celery@AMD-RYZEN-UBUNTU',
"content_type" = 'application/json',
"content_encoding" = 'utf-8',
"result" = '{"pending": false, "current": 1254, "total": 1254, "percent": 100.0, "description": "Building row 1254 of 1254"}',
"date_created" = '2021-06-01T09:36:58.465884+00:00'::timestamptz,
"date_done" = '2021-06-01T09:37:29.962267+00:00'::timestamptz,
"traceback" = NULL,
"meta" = '{"children": []}'
WHERE
"django_celery_results_taskresult"."id" = 808;
args=('daca83c1-3297-4e64-8a5e-f4b61aef84e2', 'operation_hawkeye.tasks.buzz_collect_compare_main', '([{\'service_id\': \'dc30fc45948975044cb00c39a4d5a0db8e28bc34f0b4d52fd4dcddef\', \'service_id_unique\': >\'2004e35ae5dcc2586ae5fca16ab8a5b2708ffeca233d3bb234feb347\', \'service_type\': \'buzz_collect_compare\', \'service_file_pf_folder\': \'\', \'service_file_nanonsportsproductivity_folder\': \'\', \'service_file_tba_report\': \'\', \'service_file_buzz_collect_compare\': \'services/buzzcollect_xml_compare/2021/06/01/file_2_name_Update_COOKINGHD_May_2021_Listin_726wZgI.xml\', \'service_file_type\': \'XML 1.0 document, ASCII text\', \'service_file_name\': \'file_2_name_Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml\', \'service_file_size\': 396557, \'service_status\': \'In Queue for Upload\', \'service_status_remarks\': \'{"source_information": "{\\"source_id\\": \\"27227\\", \\"source_name\\": \\"COOKINGHD\\", \\"file_1_name\\": \\"Original_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml\\", \\"file_2_name\\": \\"Update_COOKINGHD_May 2021 Listings(4-26-21 thru 5-30-21).xml\\"}"}\', \'service_creation_date\': \'2021-06-01T09:36:56.825Z\', \'service_owner\': \'p...\', ...],)', '{}', 'PROGRESS', 'celery@AMD-RYZEN-UBUNTU', 'application/json', 'utf-8', '{"pending": false, "current": 1254, "total": 1254, "percent": 100.0, "description": "Building row 1254 of 1254"}', datetime.datetime(2021, 6, 1, 9, 36, 58, 465884, tzinfo=<UTC>), datetime.datetime(2021, 6, 1, 9, 37, 29, 962267, tzinfo=<UTC>), '{"children": []}', 808)
[$ celery -A hawkeye report]
software -> celery:4.4.7 (cliffs) kombu:4.6.11 py:3.8.6
billiard:3.6.3.0 py-amqp:2.6.1
platform -> system:Linux arch:64bit, ELF
kernel version:5.8.0-53-generic imp:CPython
loader -> celery.loaders.app.AppLoader
settings -> transport:amqp results:django-db
accept_content: ['json']
broker_url: 'amqp://guest:********@localhost:5672//'
imports: ('operation_hawkeye.tasks',)
result_backend: 'django-db'
task_always_eager: False
[更新]
通过定义 中的argsrepr_maxsize
值解决了这个问题celery.py
。虽然我之前知道这个解决方案,但我没有意识到它argsrepr_maxsize
在celery.ampq
.
[celery.py]
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hawkeye.settings')
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
app = Celery('hawkeye')
default_config = 'hawkeye.celeryconfig'
app.config_from_object(default_config)
app.amqp.argsrepr_maxsize = 10485760
解决方案
推荐阅读
- ssl - Kafka Connect Splunk Sink 连接器问题
- c++ - 这是对成员访问规则的正确总结吗?
- spring-boot - 仅在一个服务器实例上激活 Batch
- tensorflow - 稀疏和分类类的 Keras ImageDataGenerator 流类索引
- reactjs - 从反应将数据传递给graphql的问题
- django - 使用 Django 登录后重定向
- python - RuntimeError:在应用程序上下文之外工作。与 app.app_context() 没有解决问题
- facebook - 为什么 Facebook 登录模式不提示用户访问他们的电子邮件地址?
- ios - 向空数组添加元素会引发错误
- javascript - 在不打开相机的情况下请求相机许可