celery: error: unrecognized arguments: worker -A test_tasks -l info -c 5

celery: error: unrecognized arguments: worker -A test_tasks -l info -c 5

我在使用 Celery 时遇到奇怪的错误,我 运行 以与 30 分钟前相同的方式对其进行设置。我一直在处理项目中的几个文件,但由于某种原因,我突然得到

[virtual_assistant] cchilders:~/projects/virtual_assistant 
$ celery worker -A test_tasks -l info -c 5
usage: celery [-h] [--auth_host_name AUTH_HOST_NAME]
              [--noauth_local_webserver]
              [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
              [--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
celery: error: unrecognized arguments: worker -A test_tasks -l info -c 5

这与我用来 运行 几个芹菜文件的命令相同,基于 http://agiliq.com/blog/2015/07/getting-started-with-celery-and-redis/

代码在这里https://bitbucket.org/codyc54321/virtual_assistant

我看到其他关于这个问题的答案说 Celery 的 arg 解析被破坏了,我不知道该怎么办。

这可能是由您导入的使用 argparse 的库或其他文件引起的。如果您导入的文件包含以下内容:

import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()

然后 celery 的 arg 解析可能会被破坏并且无法正常工作。

某些东西(可能 argparse)在 celery 处理其命令行参数(可能也与 argparse)之前发生变异 sys.argv

为了解决这个问题,如果您可以精确地隔离 celery 应用程序初始化与有问题的外部模块交互的位置(可能与 import 一样无害的东西),您可以尝试做这样的事情:

_preserved_argv = list(sys.argv[1:])
del sys.argv[1:]
irksome_library_module.jerkface_code()
sys.argv.extend(_preserved_argv)

我的芹菜调用:

celery worker --app myapp.schedule

...现在按照我期望的方式工作。