6

セロリワーカーを実行すると、出力の各行にpprintは常にタイムスタンプがプレフィックスとして付けられ、削除されます。これにより、非常に読みにくくなります。

[2015-11-05 16:01:12,122: WARNING/Worker-2] {
[2015-11-05 16:01:12,122: WARNING/Worker-2] u'key1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] :
[2015-11-05 16:01:12,122: WARNING/Worker-2] 'value1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] ,
u'_id':
[2015-11-05 16:01:12,122: WARNING/Worker-2] ObjectId('55fff3b74322c53d18ae4687')
...

の出力をフォーマットしないようにセロリに指示する方法はありpprintますか?

アップデート:

質問が少し間違っていました。望ましい出力は次のようになります。

[2015-11-05 16:01:12,122: WARNING/Worker-2] 
{
    u'key1': 'value1',
    u'_id': ObjectId('55fff3b74322c53d18ae4687'),
    ...
4

2 に答える 2

2

@xbirkettx が述べたように、出力形式はCELERYD_LOG_FORMAT設定で定義されており、デフォルトは[%(asctime)s: %(levelname)s/%(processName)s] %(message)sです。

だから、あなたの設定で:

CELERYD_LOG_FORMAT = '[%(levelname)s/%(processName)s] %(message)s'

タスク内ロガー用の特別な設定もあり、デフォルトは次のとおりです。

CELERYD_TASK_LOG_FORMAT = [%(asctime)s: %(levelname)s/%(processName)s]
[%(task_name)s(%(task_id)s)] %(message)s

asctimeタイムスタンプを削除するには、キーを削除します。のドキュメントCELERYD_TASK_LOG_FORMAT

アップデート

ドキュメントから:

print()標準出力/-err に書き込まれたものはすべてログ システムにリダイレクトされるため、 を 使用することもできます (これは無効にできます。 を参照してくださいCELERY_REDIRECT_STDOUTS)。

したがって、 を呼び出すよりもpprint.pprint、 で文字列をフォーマットしてpprint.pformatログに記録する方がよいでしょう。

@periodic_task(run_every=timedelta(seconds=10))
def pprint_dict2():
    import pprint
    values = {
        u'key1': 'value1',
        u'_id1': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key2': 'value2',
        u'_id2': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key3': 'value3',
        u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key4': 'value4',
        u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
    }
    s = pprint.pformat(values, width=1)
    print(s)  # or even better logger.info(...)

出力:

[WARNING/Beat] {u'_id1': "ObjectId('55fff3b74322c53d18ae4687')",
 u'_id2': "ObjectId('55fff3b74322c53d18ae4687')",
 u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
 u'key1': 'value1',
 u'key2': 'value2',
 u'key3': 'value3',
 u'key4': 'value4'}
于 2015-11-13T10:31:00.990 に答える
1

CELERYD_LOG_FORMAT で遊んでみてください

http://docs.celeryproject.org/en/latest/configuration.html

于 2015-11-13T09:59:10.347 に答える