Windows 上的 Celery 任务处理问题

问题描述 投票:0回答:1

每当任务发送到 celery 时,例如:


python 
>>> from tasks import sum_task
>>> result = sum_task.delay(4, 5)   # simple sum numbers function

芹菜崩溃:

[2024-10-03 23:27:32,854: DEBUG/MainProcess] TaskPool: Apply <function fast_trace_task at 0x0000020330335310> (args:('tasks.sum_task', '8fcfe22c-12e2-420c-af1b-2fe830acf23d', {'argsrepr': '(4, 33)', 'eta': None, 'expires': None, 'group': None, 'group_index': None, 'id': '8fcfe22c-12e2-420c-af1b-2fe830acf23d', 'ignore_result': False, 'kwargsrepr': '{}', 'lang': 'py', 'origin': 'gen80336@DominicRazer', 'parent_id': None, 'replaced_task_nesting': 0, 'retries': 0, 'root_id': '8fcfe22c-12e2-420c-af1b-2fe830acf23d', 'shadow': None, 'stamped_headers': None, 'stamps': {}, 'task': 'tasks.sum_task', 'timelimit': [None, None], 'properties': {'content_type': 'application/json', 'content_encoding': 'utf-8', 'application_headers': {'argsrepr': '(4, 33)', 'eta': None, 'expires': None, 'group': None, 'group_index': None, 'id': '8fcfe22c-12e2-420c-af1b-2fe830acf23d', 'ignore_result': False, 'kwargsrepr': '{}', 'lang': 'py', 'origin': 'gen80336@DominicRazer', 'parent_id': None, 'replaced_task_nesting': 0, 'retries': 0, 'root_id': '8fcfe22c-12e2-420c-af1b-2fe830acf23d', 'shadow': None, 'stamped_headers': None, 'stamps': {}, 'task':... kwargs:{})
[2024-10-03 23:27:32,868: ERROR/MainProcess] Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)')
billiard.einfo.RemoteTraceback:
"""
Traceback (most recent call last):
  File "C:\Users\xxxx\.conda\envs\celery_demo\lib\site-packages\billiard\pool.py", line 362, in workloop
    result = (True, prepare_result(fun(args, **kwargs)))
  File "C:\Users\xxxx\.conda\envs\celery_demo\lib\site-packages\celery\app\trace.py", line 664, in fast_trace_task
    tasks, accept, hostname = _loc
ValueError: not enough values to unpack (expected 3, got 0)
"""

咨询: 克劳德 3.5 十四行诗 gpt-4o

python windows celery
1个回答
0
投票

so(来自 github 线程和 gpt4o)...

由于跨操作系统的多处理和信号处理工作方式存在差异,最新版本的 Celery(5.x 及更高版本)似乎与 Windows 存在一些已知的兼容性问题。

# the fix: use the solo flag for now (in mvp/development)

celery -A tasks worker --loglevel=info -P solo

solo
池是一个单线程选项,可用作 Windows 上的解决方法。该池不适合生产环境,因为它仅限于一次处理一项任务,但它对开发和调试很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.