如何在不创建Windows服务的情况下在Windows上运行celery worker?有$ celery -A your_application worker
的任何类比吗?
答案 0 :(得分:27)
Celery 4.0+
尚未正式支持窗口。但它仍然适用于某些开发/测试目的的窗口。
使用eventlet
代替如下:
pip install eventlet
celery -A <module> worker -l info -P eventlet
它适用于我window 10
+ celery 4.1
+ python 3
。
This solution解决了以下异常:
[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
答案 1 :(得分:24)
是:
celery -A your_application -l info
另请注意芹菜有dropped support for Windows(since v4),所以最好
pip install celery==3.1.25
适用于Windows的3.1.25 was the last version(刚刚在我的win10机器上测试过)。不过不需要降级花(浏览器显示器为芹菜)。
另请参阅FAQ for Windows
答案 2 :(得分:3)
它的运行方式与Linux相同。将目录更改为包含celery任务的模块并调用"c:\python\python" -m celery -A module.celery worker
效果很好。
答案 3 :(得分:3)
有两种解决方法可以使Celery 4在Windows上运行:
有关更多详细信息,请参见https://www.distributedpython.com/2018/08/21/celery-4-windows
答案 4 :(得分:2)
您仍然可以在Windows 10+上使用celery 4 0+ 只需使用此命令“ celery -A projet worker--pool = solo-l info”代替“ celery-A project worker -l info
答案 5 :(得分:1)
Celery 4.0+尚未正式支持窗口。但是出于某些开发/测试目的,它仍然可以在窗口上运行。 您可以使用以下任何一种方式:
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
https://www.distributedpython.com/2018/08/21/celery-4-windows/
答案 6 :(得分:1)
使用-pool = solo 参数编译Celery。
示例:
celery -A your-application worker -l info --pool=solo
答案 7 :(得分:1)
你可以使用线程在 Windows 上运行 celery,而无需额外的库
celery -A your_application worker -P threads
答案 8 :(得分:0)
除了我的manage.py文件外,我还使用以下代码制作了.bat文件:
title CeleryTask
::See the title at the top.
cd
cmd /k celery -A MainProject worker -l info
因此,每次我要运行celery时,我只需双击此批处理文件,即可完美运行。 而且您不能在Windows上使用芹菜4的事实是真的。
答案 9 :(得分:0)
我已经使用RabbitMQ服务器运行芹菜任务。 RabbitMq比Redis代理更好,更简单
在运行celery时,请使用以下命令“ celery -A项目名工作人员--pool = solo -l info” 并避免使用此命令“ celery -A项目名称工作者--loglevel信息”
答案 10 :(得分:0)
感觉要在Windows上使用芹菜4.4杀死自己后,我想我可以回答这个问题。
对于celery 4.0及更高版本,在创建celery实例之前,首先在python代码中设置以下环境变量。
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
然后使用默认池选项运行celery worker命令。
celery worker -A <celery_file> -l info
这将与多个子进程同时运行celery worker。
注意:当您使用 gevent 或 eventlet 池运行celery时,它可以运行,但不会在Windows上运行并发进程。
答案 11 :(得分:0)
在 windows 上运行 celery 进行开发。你有两种方法。
Pip install Celery
安装 Celery。限制:
4.使用 WSL 运行 Celery 和 Redis-server
sudo apt install redis-server
安装 redis-server。如果您已经熟悉 Linux,WSL 将是您在 Windows 上的朋友。 几乎没有限制,包括在 WSL 上支持 Docker。您可以使用 WSL 执行大部分开发任务。