Celery ロギングを で動作させようとしていDjango
ます。settings.py
コンソールに移動するためのログイン セットアップがあります(ホストしている場合は正常に動作しますHeroku
)。各モジュールの上部には、次のものがあります。
import logging
logger = logging.getLogger(__name__)
そして私のtasks.pyには、次のものがあります。
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
これは、タスクからの呼び出しをログに記録するのに問題なく機能し、次のような出力が得られます。
2012-11-13T18:05:38+00:00 app[worker.1]: [2012-11-13 18:05:38,527: INFO/PoolWorker-2] Syc feed is starting
しかし、そのタスクが別のモジュールのメソッド (メソッドなど) を呼び出した場合、queryset
重複したログ エントリが取得されます。
2012-11-13T18:00:51+00:00 app[worker.1]: [INFO] utils.generic_importers.ftp_processor process(): File xxx.csv already imported. Not downloaded
2012-11-13T18:00:51+00:00 app[worker.1]: [2012-11-13 18:00:51,736: INFO/PoolWorker-6] File xxx.csv already imported. Not downloaded
使えると思います
CELERY_HIJACK_ROOT_LOGGER = False
ロギングを使用するだけですDjango
が、試してみるとうまく"PoolWorker-6"
いきませんでした。(ちなみに、Celery のログ エントリにタスク名を表示する方法がわかりません。これは、ドキュメントがそうすべきであることを示しているようです)。
ここで単純なものが欠けていると思います。