簡體   English   中英

django DEBUG設置為False時,Celery沒有看到任務

[英]Celery doesn't see tasks when django DEBUG is set to False

我在Celery上有一個Django應用程序。 在不同應用程序中帶有@shared_task的task.py文件中描述了任務,每個文件都有自己的AppConfig,並且已正確安裝(添加到INSTALLED_APP中)。

一切正常,直到我關閉了DEBUG。 由於未注冊類型的任務,芹菜開始失敗。 使用DEBUG變量,Celery可以查看我的所有任務並正常工作。

編輯:我的celery.py代碼如下:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

app = Celery('APP')
app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

運行manage.py check不會顯示任何錯誤,所有配置文件和日志都具有正確的權限。

什么會導致這種錯誤?

導致這種奇怪錯誤的原因是我的日志文件權限。

我的settings.py中包含以下內容:

if not DEBUG:
    WORKER_HANDLERS = {}
    for app in PROJECT_APPS:
        WORKER_HANDLERS['file_{0}'.format(app)] = {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/var/log/app/{0}.log'.format(app),
        }

    LOGGING['handlers'].update(WORKER_HANDLERS)

在postinst腳本中安裝我的DEBIAN軟件包時,我從root調用collectstatic命令,該命令創建了root擁有的所有日志文件。

這就是celery無法運行的原因:實際上,啟動我的應用程序時出錯。

然而奇怪的是, manage.py check表示一切正常。

注意日志文件的文件權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM