微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ImportError:无法从“ celery.bin.base”导入名称“ Command” Docker示例中的花替代品

如何解决ImportError:无法从“ celery.bin.base”导入名称“ Command” Docker示例中的花替代品

当我运行命令时

flower -A main --port=5555

花不起作用,错误是:

> ImportError: cannot import name 'Command' from 'celery.bin.base'

有什么想法吗?主要是Django项目

解决方法

花总是落后于Celery,因此,如果您使用最新的Celery(它们重构了CLI),则可能会失败。坚持4.4.x,直到Flower追上来。

,

如果您希望避免降低Celery工人的等级,一种解决方法是将主要版本的Celery单独运行早期版本的Flower。例如,在Docker容器中。 Flower只是监视您的经纪人,并且可以与您的Celery工人完全独立地运行。

Docker示例中的花

对于您的Django / Celery安装,运行Celery normally(无花):

celery -A main worker

对于Flower,请使用docker image mher/flower:0.9.5,其内部使用Celery 4.4.6,并且为reported working

以下是示例docker run命令:

docker run --name flower -p 5555:5555 mher/flower:0.9.5 flower --broker=redis://redis-address

注意:您必须将代理地址更改为代理的dns可解析名称或ip。对于rabbitmq,请使用--broker=amqp://guest@rabbitmq-address:5672//。有关高级选项,请参见url documentation

一旦运行,Flower应该可以在Docker主机的IP:5555上获得

您也可以创建一个docker-compose文件,将run命令中的所有参数封装起来,然后使用docker-compose up -d

替代品

如果愿意,您还可以使用pip install flower redis celery==4.4.7在不使用Docker 的情况下完成所有操作,只要它与主要Celery安装分开即可,然后使用{{1} }。一个单独的venv可能适用于此。

有关原始错误的将来更新,请参见github issue

,

在 celery 5.0.5 上工作时遇到同样的问题,所以切换到 celery 4.4.7 版本和花 0.9.7 并且它工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。