Python 如何使用Django正确配置芹菜日志记录功能?

Python 如何使用Django正确配置芹菜日志记录功能?,python,django,celery,Python,Django,Celery,我使用Django和芹菜来安排任务,但我对记录器有一个问题,因为它不能正确传播。正如您在下面的代码中所看到的,我已经配置了Pythonlogging模块和get\u task\u logger芹菜模块 import logging from celery import Celery from celery.utils.log import get_task_logger # Configure logging logging.basicConfig(filename='example.log'

我使用Django和芹菜来安排任务,但我对记录器有一个问题,因为它不能正确传播。正如您在下面的代码中所看到的,我已经配置了Python
logging
模块和
get\u task\u logger
芹菜模块

import logging
from celery import Celery
from celery.utils.log import get_task_logger

# Configure logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)

# Create Celery application and Celery logger
app = Celery('capital')
logger = get_task_logger(__name__)


@app.task()
def candle_updated(d, f):

    logging.warning('This is a log')
    logger.info('This is another log')
    return d+f
我使用
django芹菜beat
扩展从django管理员设置定期任务。此模块将计划存储在Django数据库中,并提供一个方便的管理界面,用于在运行时管理定期任务

按照建议,我以以下方式启动worker和scheduler:

$ celery -A capital beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
celery beat v4.4.0 (cliffs) is starting.
__    -    ... __   -        _
LocalTime -> 2020-04-02 22:33:32
Configuration ->
    . broker -> redis://localhost:6379//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> django_celery_beat.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 seconds (5s)
[2020-04-02 22:33:32,630: INFO/MainProcess] beat: Starting...
[2020-04-02 22:33:32,631: INFO/MainProcess] Writing entries...
[2020-04-02 22:33:32,710: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)
[2020-04-02 22:33:32,729: INFO/MainProcess] Writing entries...
[2020-04-02 22:33:38,726: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)
[2020-04-02 22:33:44,751: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)

一切似乎都很顺利。控制台中每6秒就有一次输出(周期性任务的频率),因此任务似乎是在后台执行的,但我无法检查它。我遇到的问题是example.log文件为空,原因可能是什么?

是否也启动了工作节点?beat只是一个调度程序,您还必须运行一个worker

芹菜-资本工人-l信息