2017-05-25 46 views
3

我正在研究基于Celery的应用程序,并希望从主函数中启动工作程序。下面是代码的一个非常简化的版本:Python芹菜worker_main“RuntimeError:超过最大递归深度”

from celery import Celery 

class CoolApp(object): 
    def __init__(self): 
     self.app = Celery('test', 'amqp://[email protected]/') 

test = CoolApp() 

test.app.worker_main() 

这将产生一个错误RuntimeError: maximum recursion depth exceeded in cmp,我想不通为什么。请帮忙。

回溯:

Traceback (most recent call last): 
    File "test.py", line 9, in <module> 
    test.app.worker_main() 
    File "/usr/lib/python2.7/site-packages/celery/app/base.py", line 368, in worker_main 
    ).execute_from_commandline(argv) 
    File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 281, in execute_from_commandline 
    return self.handle_argv(self.prog_name, argv[1:]) 
    File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 367, in handle_argv 
    *self.parse_options(prog_name, argv, command)) 
    File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 403, in parse_options 
    self.parser = self.create_parser(prog_name, command) 
    File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 419, in create_parser 
    self.add_arguments(parser) 
    File "/usr/lib/python2.7/site-packages/celery/bin/worker.py", line 275, in add_arguments 
    default=conf.worker_state_db, 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 431, in __getitem__ 
    return getitem(k) 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 280, in __getitem__ 
    return mapping[_key] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    ... 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/celery/utils/collections.py", line 130, in __getattr__ 
    return self[k] 
    File "/usr/lib64/python2.7/UserDict.py", line 19, in __getitem__ 
    if key in self.data: 
    File "/usr/lib/python2.7/site-packages/kombu/utils/objects.py", line 44, in __get__ 
    value = obj.__dict__[self.__name__] = self.__get(obj) 
    File "/usr/lib/python2.7/site-packages/celery/app/base.py", line 148, in data 
    return self.callback() 
    File "/usr/lib/python2.7/site-packages/celery/app/base.py", line 910, in _finalize_pending_conf 
    conf = self._conf = self._load_config() 
    File "/usr/lib/python2.7/site-packages/celery/app/base.py", line 923, in _load_config 
    self.prepare_config(self.loader.conf), self._preconf, 
    File "/usr/lib/python2.7/site-packages/kombu/utils/objects.py", line 44, in __get__ 
    value = obj.__dict__[self.__name__] = self.__get(obj) 
    File "/usr/lib/python2.7/site-packages/celery/app/base.py", line 1208, in loader 
    return get_loader_cls(self.loader_cls)(app=self) 
    File "/usr/lib/python2.7/site-packages/celery/loaders/__init__.py", line 21, in get_loader_cls 
    return symbol_by_name(loader, LOADER_ALIASES, imp=import_from_cwd) 
    File "/usr/lib/python2.7/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name 
    module = imp(module_name, package=package, **kwargs) 
    File "/usr/lib/python2.7/site-packages/celery/utils/imports.py", line 100, in import_from_cwd 
    with cwd_in_path(): 
    File "/usr/lib64/python2.7/contextlib.py", line 17, in __enter__ 
    return self.gen.next() 
    File "/usr/lib/python2.7/site-packages/celery/utils/imports.py", line 60, in cwd_in_path 
    if cwd in sys.path: 
RuntimeError: maximum recursion depth exceeded in cmp 
+0

在红帽企业Linux工作站版本7.3(Maipo)上使用celery 4.0.2 – Jordan

+0

我也面临同样的问题。有人可以帮忙吗? 在此先感谢:)。 –

回答

0

我得到了同样的错误,当我试图把芹菜3.1.25升级到4.1.0。 因此基本上在4.1.0中几乎没有被使用的软件包。所以请确保您没有使用最新版本中废弃的类。 在我来说,我使用celery.worker.job.Request这是在3.1.25过时,现在是celery.worker.request.Request

我希望这会帮助你。

相关问题