芹菜引发值错误:没有足够的值来解压缩



尝试使用 Celery 运行简单示例并收到异常。RabbitMQ 在 Docker 中启动,也尝试在本地启动它。Celery 在本地 Windows 主机上工作

from celery import Celery
app = Celery('tasks', broker='amqp://192.168.99.100:32774')
@app.task()
def hello():
print('hello')

if __name__ == '__main__':
hello.delay()

我的错误文本摘录:

[2017-08-18 00:01:08,632: ERROR/MainProcess] Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)',)
Traceback (most recent call last):                                              
File "c:usersusercelenvlibsite-packagesbilliardpool.py", line 358, in workloop                        
result = (True, prepare_result(fun(*args, **kwargs)))                                  
File "c:usersusercelenvlibsite-packagesceleryapptrace.py", line 525, in _fast_trace_task
tasks, accept, hostname = _loc
ValueError: not enough values to unpack (expected 3, got 0)

Celery 4.0+尚未正式支持Windows。但它仍然可以在Windows上进行某些开发/测试。

请改用eventlet,如下所示:

pip install eventlet
celery -A <module> worker -l info -P eventlet

它在Windows 10+celery 4.1+python 3上对我有用。

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

事件在子进程上存在问题。调用进程错误:

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

这适用于我Windows 10+celery 4.2+python 3.6

它对我有用:

celery -A my_project_name worker --pool=solo -l info

基本上事情变得单线程并得到支持

我在Windows 7 32位系统上收到此错误。所以我这样做是为了让它工作。

添加此

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

在 Django 项目中myproj/settings.py文件中定义 Celery 实例之前。

它应该像

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproj.settings')
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
app = Celery('tasks', broker='redis://127.0.0.1:6379/0')

我正在使用 redis 作为消息传递代理,因此定义broker='redis://127.0.0.1:6379/0'

用于Windows上的Celery 4.1

设置环境变量FORKED_BY_MULTIPROCESSING=1。然后你可以简单地运行celery -A <celery module> worker.

哪个芹菜版本?据我所知,自芹菜 4 以来,窗口中不支持芹菜

运行此命令

芹菜 -A name_of_project工人 --pool=solo -l 信息

相关内容

  • 没有找到相关文章