12

ログの目的で、セロリ タスクがそれを実行しているワーカーの名前を取得できるようにしたいと考えています。ブローカーに直接クエリを実行するのではなく、タスク内からこれを処理する必要があります。これを行う方法はありますか?それが重要な場合は、RabbitMQ でセロリを使用しています。

4

4 に答える 4

6

ワーカーを保持するビリヤードを利用する必要があります。

from celery import task
from billiard import current_process

@task
def getName():
    p = current_process()
    return p.index

次に、プロセスの作成時に ids->names をマップするグローバル ディクショナリを作成します。

于 2014-05-25T15:42:38.687 に答える
3

あなたは元々、-n フラグで入力した名前を探していましたよね? それは initargs 配列にあります。これが得られる回答の修正版です。

from celery import task
from billiard import current_process

@task
def getName():
    p = current_process()
    return p.initargs[1].split('@')[1]
于 2014-08-19T12:56:22.137 に答える