ロギングファイルはどこにありますか?
私が見る通り、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
これは、ロガーがうまく動作し、メッセージを書き込むことを意味します。
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
保存場所のフォルダを確認してください。今度は、私たちの仕事のためにFileHandler
を追加してみましょう。新しいファイル(tasks.log
)が表示されます。コンテンツの例:
2017-04-08 18:35:02,052 - tasks - INFO - Adding 1 + 2
...
は、ログファイルは、労働者によって返された結果を格納していますか?
デフォルトでは、情報はコンソールに印刷されます。しかし、signals、カスタムTask/Loaderクラスを使用して、特定のロガー、ハンドラーを登録し、動作をカスタマイズすることができます。
Celery
を実行すると、-f LOGFILE, --logfile=LOGFILE
引数を設定することもできます。
これが役に立ちます。