Ron*_*nso 10 django celery supervisord
我的__init__.py
档案
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
Run Code Online (Sandbox Code Playgroud)
我的celery.py
档案
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Run Code Online (Sandbox Code Playgroud)
我的/etc/supervisor/conf.d/celery.conf
文件:
[program:]
command=/home/user/venv/bin/celery -A myproject worker --loglevel=INFO
environment=PYTHONPATH=/home/user/project-folder
user=user
numprocs=1
autostart=true
autorestart=true
stdout_logfile=/home/user/logs/celery.log
stderr_logfile=/home/user/logs/celery.log
startssecs=10
stopwaitsecs = 600
stopasgroup=true
priority=100
Run Code Online (Sandbox Code Playgroud)
这是错误消息的最后一部分celery.log
File "/home/user/venv/lib/python3.6/site-packages/celery/loaders/base.py", line 131, in config_from_object
self._conf = force_mapping(obj)
File "/home/user/venv/lib/python3.6/site-packages/celery/utils/collections.py", line 48, in force_mapping
return DictAttribute(m) if not isinstance(m, Mapping) else m
File "/home/user/venv/lib/python3.6/abc.py", line 183, in __instancecheck__
subclass = instance.__class__
File "/home/user/venv/lib/python3.6/site- packages/django/utils/functional.py", line 215, in inner
self._setup()
File "/home/user/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 43, in _setup
self._wrapped = Settings(settings_module)
File "/home/user/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 106, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/home/user/venv/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 894, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
File "<frozen importlib._bootstrap_external>", line 1129, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1273, in find_spec
File "<frozen importlib._bootstrap_external>", line 1231, in _get_spec
File "<frozen importlib._bootstrap_external>", line 556, in
spec_from_file_location
RecursionError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)
不知道这个配置有什么问题吗?
小智 7
我也有同样的问题,当我删除下面这句话时
app.config_from_object('django.conf:settings', namespace='CELERY')
Run Code Online (Sandbox Code Playgroud)
然后就可以了。所以我认为问题就是因为这个而发生的。也许我们应该指定这个函数的配置。
您不应该在__init__.py
文件中导入 celery 应用程序。把它拿出来,它将修复你的无限启动导入循环。本质上,你的 celery 应用程序启动 django 设置模块初始化,该模块依次加载应用程序并尝试重新加载项目__init__.py
文件,该项目文件加载你的 celery 文件,然后尝试重新加载设置文件,因为它还没有初始化。。。(你明白了)。
归档时间: |
|
查看次数: |
6079 次 |
最近记录: |