3

送信者フィルターを機能させようとしています。

@celery.task
def run_timer(crawl_start_time):
    return crawl_start_time

@task_success.connect
def run_timer_success_handler(sender, result, **kwargs):

    print '##################################'
    print 'in run_timer_success_handler'

上記は正常に機能しますが、送信者でフィルタリングしようとすると、機能しません。

@task_success.connect(sender='tasks.run_timer')
def run_timer_success_handler(sender, result, **kwargs):

    print '##################################'
    print 'in run_timer_success_handler'

私も試しました: @task_success.connect(sender='run_timer') @task_success.connect(sender=run_timer) @task_success.connect(sender=globals()['run_timer'])

それらのどれも機能しません。

送信者フィルターを効果的に使用して、by callback が run_timer タスクに対して呼び出され、他のタスクに対して呼び出されないようにする方法を教えてください。

4

2 に答える 2

4

http://docs.celeryproject.org/en/latest/userguide/signals.html#task-success ... Sender は実行されたタスク オブジェクトです。(after_task_publish.sender とは異なります) ...

@task_success.connect(sender=run_timer)
def ...

わたしにはできる。幸運を。

于 2016-04-19T02:35:38.493 に答える