Celery 4.0+
官方并不支持 Windows 系统。但是对于某些开发/测试目的,它仍然可以在 Windows 上运行。
可以使用以下方式来替代: eventlet
Use eventlet
instead as follows:
pip install eventlet
celery -A <module> worker -l info -P eventlet
我在window 10
+ celery 4.1
+ python 3
的环境下测试,发现此方案可以解决以下异常:
[2017-11-16 21:19:46,938: ERROR/MainProcess] Task handler raised error: ValueError('need more than 0 values to unpack',)
Traceback (most recent call last):
File "c:\users\wchen8\work\venv\weinsta\lib\site-packages\billiard\pool.py", line 358, in workloop
result = (True, prepare_result(fun(*args, **kwargs)))
File "c:\users\wchen8\work\venv\weinsta\lib\site-packages\celery\app\trace.py", line 525, in _fast_trace_task
tasks, accept, hostname = _loc
ValueError: need more than 0 values to unpack
===== 更新 2018-11 =====
Eventlet 在 subprocess.CalledProcessError 方面存在问题:
https://github.com/celery/celery/issues/4063
https://github.com/eventlet/eventlet/issues/357
https://github.com/eventlet/eventlet/issues/413
所以尝试使用 gevent
替代。
pip install gevent
celery -A <module> worker -l info -P gevent
在我的设备上,以下配置可以正常工作:window 10
、celery 4.2
和python 3.6
是的:
celery -A your_application -l info
请注意,Celery自版本4起已经停止支持Windows,因此最好选择其他操作系统。
pip install celery==3.1.25
3.1.25是最后一个可在Windows上运行的版本(我刚在我的win10机器上测试过)。然而,不需要降级flower(用于监视celery的浏览器)。
还请参阅Windows常见问题解答
anyjson设置命令中的错误:use_2to3无效。
- GooDeeJAY使用 --pool=solo 参数编译 Celery。
例如:celery -A your-application worker -l info --pool=solo
revoke()
它... - Shmack我已经使用RabbitMQ服务器运行了celery任务。相比于Redis代理,RabbitMQ更加优秀和简单。
在运行celery时,请使用以下命令 "celery -A 项目名称 worker --pool=solo -l info",避免使用以下命令 "celery -A 项目名称 worker --loglevel info"。
Celery 4.0+目前并不官方支持Windows。但对于某些开发/测试目的,仍可在Windows上使用。
你可以使用以下其中之一:
celery worker --app=app.app --pool=eventlet --loglevel=INFO
celery worker --app=app.app --pool=gevent --loglevel=INFO
celery worker --app=app.app --pool=solo --loglevel=INFO
celery -A <app> worker --loglevel=info -P eventlet
celery -A <app> worker --loglevel=info -P gevent
celery -A <app> worker --loglevel=info -P solo
context
错误,那么请升级 gevent 到 20.6.2 版本,升级 eventlet 到 0.26.1 版本,或者使用 solo
。这个操作和在Linux中一样。进入包含celery任务的模块目录,然后调用"c:\python\python" -m celery -A module.celery worker
即可。
python
。如果你的PYTHONPATH
正确设置,只需执行celery -A tasks worker -l info
即可。 - Moses KoledoyePython
),Worker(Worker
)。我认为这样做可以更好地帮助那些有同样问题的人。 - Moses KoledoyePYTHONPATH
不就是用来处理import
语句的吗?如果没有将Python\Scripts
目录添加到PATH
中或调用python -m
,那么怎样才能找到Celery二进制文件呢? - Baris Demiray你可以使用线程在Windows上运行celery,而不需要额外的库。
celery -A 你的应用程序 worker -P threads
您仍然可以在Windows 10+上使用celery 4.0+,只需使用此命令“celery -A project worker --pool=solo -l info”而不是“celery -A project worker -l info”。
在使用Windows上的Celery 4.4让我感到无比绝望后,我认为我可以回答这个问题。
对于4.0及以上版本的Celery,在创建Celery实例之前,首先在Python代码中设置以下环境变量。
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
然后使用默认池选项运行celery worker命令。
celery worker -A <celery_file> -l info
这将同时运行多个子进程的celery worker。
注意:当您使用gevent或eventlet池运行celery时,它可以工作,但在Windows上不会运行并发进程。
revoke()
以撤销已执行的任务... - Shmack
celery *** inspect active
在启动 Worker 后最初可以正常工作,然后大约 5 分钟后就无响应了,目前还不清楚为什么(在 Python 3.3.5,Celery 4.1.0 和 Eventlet 0.22.1 下没有此问题)。 - pangyutengCELERY_BROKER_HEARTBEAT = 0
。 - pangyuteng