您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Celery-Django应用程序中监视来自工人的事件?

如何在Celery-Django应用程序中监视来自工人的事件?

好的,尽管我不确定这是否是解决方案,但我找到了一种解决方法,但是对我有用。监视功能基本上直接连接到代理,并侦听不同类型的事件。我的代码如下所示:

from celery.events import EventReceiver
from kombu import Connection as BrokerConnection

def my_monitor:
    connection = BrokerConnection('amqp://guest:guest@localhost:5672//')

    def on_event(event):
        print "EVENT HAPPENED: ", event

    def on_task_Failed(event):
        exception = event['exception']
        print "TASK Failed!", event, " EXCEPTION: ", exception

    while True:
        try:
            with connection as conn:
                recv = EventReceiver(conn,
                                 handlers={'task-Failed' : on_task_Failed,
                                           'task-succeeded' : on_event,
                                           'task-sent' : on_event,
                                           'task-received' : on_event,
                                           'task-revoked' : on_event,
                                           'task-started' : on_event,
                                           # OR: '*' : on_event
                                           })
            recv.capture(limit=None, timeout=None)
    except (KeyboardInterrupt, SystemExit):
        print "EXCEPTION KEYBOARD INTERRUPT"
        sys.exit()

这是所有的了。而且我在与正常应用程序不同的过程中运行此程序,这意味着我为我的celery应用程序创建了一个子进程,该子进程仅运行此功能。高温超导

Go 2022/1/1 18:30:34 有473人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶