Celery タスクの実行中に記録されたすべてのログ メッセージにアクセスしたいと考えています。
ドキュメントから、タスクの ID がログの一部として自動的に報告されるように、すべてのタスクのロガーを作成できます。
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@celery.task
def add(x, y):
logger.info('Adding %s + %s', x, y)
return x + y
次のようなログ メッセージが生成されます。
[2013-08-09 10:05:02,381: INFO/MainProcess] project.tasks.add[e56cd982-4c20-2328-af55-9cf4d63623df]: Adding 2 + 2
報告されたタスク ID に基づいて関連するメッセージを抽出することはできましたが、それは非常に非効率的で洗練されていないように思えます。logger
task.ready()
さらに、返す前にログメッセージを表示できるようにしたいと思いますTrue
(完了前task.state
に与えるのと同じように)。PENDING
3.0 への Celery ログの改善、 Celery ログのドキュメント、およびutils.log
ソース コードを読みましたが、自分のニーズに合ったものを見つけることができないようです。保留中のタスクのログ メッセージにアクセスすることさえ可能ですか? StringIO
タスクの通常の戻り値と一緒にメッセージをキャッチするインスタンスを簡単に返すことができますが、完了前にタスクのログにアクセスすることに興味があります。
任意のヒント?