如何在窗户上种芹菜



如何在不创建Windows服务的情况下在Windows上运行芹菜工作程序?与$ celery -A your_application worker有相似之处吗?

Celery 4.0+尚未正式支持窗口。但出于某些开发/测试目的,它仍然可以在窗口上工作。

使用eventlet,如下所示:

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:userswchen8workvenvweinstalibsite-packagesbilliardpool.py", line 358, in workloop
    result = (True, prepare_result(fun(*args, **kwargs)))
  File "c:userswchen8workvenvweinstalibsite-packagesceleryapptrace.py", line 525, in _fast_trace_task
    tasks, accept, hostname = _loc
ValueError: need more than 0 values to unpack

=====更新2018-11=====

Eventlet在子流程上存在问题。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

yes:

celery -A your_application -l info

还需要注意的是,Celery已经放弃了对Windows的支持(自v4以来),因此最好使用

pip install celery==3.1.25

3.1.25是最后一个在windows上运行的版本(刚刚在我的win10机器上测试)。不过,不需要降级flower(芹菜的浏览器监视器)。

另请参阅Windows 的常见问题解答

使用--pool=solo参数编译Celery。

示例:celery -A your-application worker -l info --pool=solo

让Celery 4在Windows上工作有两种解决方案:

  • 使用eventlet、gevent或solo并发池(如果您的任务是I/O而非CPU绑定)
  • 将环境变量FORKED_BY_MULTIPROESSING设置为1(这是自版本4以来导致底层台球包在Windows下失败的实际原因)

请参阅https://www.distributedpython.com/2018/08/21/celery-4-windows有关更多详细信息,


我已经使用RabbitMQ服务器运行了芹菜任务。RabbitMq比redis broker 更好更简单

运行芹菜时,请使用以下命令"芹菜-A项目名称worker--pool=solo-l info"并避免使用这个命令"celener-A project name worker-loglevel info"

这与Linux中的方法相同。将目录更改为包含芹菜任务的模块并调用"c:pythonpython" -m celery -A module.celery worker效果良好。

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/

使用线程,您可以在没有额外库的情况下在windows上运行芹菜

celery -A your_application worker -P threads

您仍然可以在Windows 10中使用芹菜4 0++只需使用以下命令"芹菜-项目工作人员-pool=solo-l info",而不是"芹菜-一个项目工作人员-l info "

在windows上使用芹菜4.4后,我想我可以回答这个问题。

对于芹菜4.0及以上版本,在创建芹菜实例之前,首先在python代码中设置以下环境变量。

os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')

然后使用默认的池选项运行celener-worker命令。

celery worker -A <celery_file> -l info

这将同时运行带有多个子进程的celener-worker。

注意:当您使用geventeventlet池运行芹菜时,它会工作,但不会在windows上运行并发进程。

在windows上运行celeni进行开发。你有两种方法。

  1. 使用Windows作为主机
  • 从安装Redis服务器https://github.com/dmajkic/redis/downloads
  • 运行redis_server.exe
  • 使用Pip install Celery安装Celery
  • 运行Celery命令

限制:

  • 此方法仅适用于Python 3.6或更低版本
  • Celery 4不支持windows
  • 将使用旧Redis服务器版本
  • 难以管理

4.使用WSL运行Celery和Redis服务器

  • 使用本指南安装WSLhttps://www.windowscentral.com/install-windows-subsystem-linux-windows-10.
  • 使用sudo apt install redis-server在WSL终端上安装redis服务器
  • 在WSL上安装Celery并执行所有与Celery相关的命令

如果您已经熟悉Linux,WSL将是您在windows上的朋友。有一些限制,包括在WSL上支持Docker。您可以使用WSL执行大多数开发任务。

Celery从5.x版本开始在其CI中再次使用windows测试它,如果出现任何问题,您可以尝试在windows中使用它。在创建Celery实例之前,尝试在python代码中设置以下环境变量

os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')

但据我所知,芹菜现在正式支持基于开发目的在windows上运行。

除了我的manage.py文件外,我还制作了一个.bat文件,代码是:

title CeleryTask
::See the title at the top.
cd 
cmd /k celery -A MainProject worker -l info

所以每次我想运行芹菜时,我只需双击这个批处理文件,它就会完美地运行。事实上,你不能在窗户上使用芹菜4。

相关内容

  • 没有找到相关文章

最新更新