celery 1
使用环境:
- window 7
- celery 4.3.0
- python 3.7
实践:
- 启动方式引起的问题:
[2019-05-24 16:18:15,545: INFO/MainProcess] Received task: tasks.add[5d387722-5389-441b-9b01-a619b93b4702] [2019-05-24 16:18:15,550: ERROR/MainProcess] Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)',) Traceback (most recent call last): File "F:\self\manager\venv\Lib\site-packages\billiard\pool.py", line 358, in workloop result = (True, prepare_result(fun(*args, **kwargs))) File "F:\self\manager\venv\Lib\site-packages\celery\app\trace.py", line 525, in _fast_trace_task tasks, accept, hostname = _loc ValueError: not enough values to unpack (expected 3, got 0)
-
- 原因:
- celery以下几个并发模式的,prefork,threading,协程(gevent,eventlet)
- 默认 perfork 启动(concurrency: 4 (prefork), fork是个进程)可设置:import os
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1'),也可以使用线程或者写成方式: -P event, -P gevent
- 原因:
2. flask 程序中调用,但在celery -A task:celery -P gevent 启动后,站在celery启动角度,没有加载celery任务所在模块,引起的异常
Received unregistered task of type 'app.tasks.messageTasks.send_follow_message'. The message has been ignored and discarded. ...... ...... ...... strategy = strategies[type_] KeyError: 'app.tasks.messageTasks.send_follow_message'
-
- 解决:站在celery角度,启动时载入 celery 任务所在模块
3. celery 启动时的 task:celery task.py 文件中不支持 if __name == "__main__": 的使用,即在其下是不可用,也就是说task.py 不是作为起始文件,是celery的中间调用文件

浙公网安备 33010602011771号