日誌文件在哪裏?
我可以看到你沒有任何FileHandlers
。這意味着記錄器將消息寫入控制檯。
讓我們來檢查一下。 tasks.py這裏例如:
# celery 4.0.2
@celery.task(name='add')
def add(x, y):
logger.info('Adding {0} + {1}'.format(x, y))
return x + y
app = celery.Celery(
__name__,
broker='redis://localhost:6379/0',
backend='redis://localhost:6379/0',
)
app.conf.beat_schedule = {
# run task each 2 seconds
'add-every-2-seconds': {
'task': 'add',
'schedule': 2.0,
'args': (1, 2)
},
}
運行芹菜(celery worker -A tasks.app --loglevel=info --beat
),檢查控制檯。你會看到類似的東西:
[2017-04-08 18:18:55,924: INFO/Beat] Scheduler: Sending due task add-every-2-seconds (add)
[2017-04-08 18:18:55,930: INFO/MainProcess] Received task: add[44a6877c-84a2-4a26-815e-1f637fdf9c0c]
[2017-04-08 18:18:55,932: INFO/PoolWorker-2] add[44a6877c-84a2-4a26-815e-1f637fdf9c0c]: Adding 1 + 2
[2017-04-08 18:18:55,934: INFO/PoolWorker-2] Task add[44a6877c-84a2-4a26-815e-1f637fdf9c0c] succeeded in 0.00191404699945s: 3
[2017-04-08 18:18:57,924: INFO/Beat] Scheduler: Sending due task add-every-2-seconds (add)
[2017-04-08 18:18:57,928: INFO/MainProcess] Received task: add[c386d360-57d3-4352-8a89-f86bb2376e4e]
[2017-04-08 18:18:57,930: INFO/PoolWorker-3] add[c386d360-57d3-4352-8a89-f86bb2376e4e]: Adding 1 + 2
[2017-04-08 18:18:57,931: INFO/PoolWorker-3] Task add[c386d360-57d3-4352-8a89-f86bb2376e4e] succeeded in 0.00146738500007s: 3
這意味着記錄器工作良好,並寫我們的消息。現在,讓我們嘗試添加FileHandler
我們的任務:
logger = get_task_logger(__name__)
task_handler = FileHandler('task.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
task_handler.setFormatter(formatter)
logger.addHandler(task_handler)
運行芹菜,並檢查文件夾中存儲tasks.py
。您應該看到新文件(tasks.log
)。內容實例:
2017-04-08 18:35:02,052 - tasks - INFO - Adding 1 + 2
...
是否日誌文件存儲由工人返回的結果?
默認情況下,信息只打印到控制檯。但是,你可以註冊特定的記錄器,處理器和使用signals,自定義任務/ Loader類行爲進行自定義。
而且運行Celery
時,你可以設置-f LOGFILE, --logfile=LOGFILE
說法。
希望這會有所幫助。