远程芹菜工人完成后通知或回调烧瓶

sattva_venu

我在两台不同的机器上运行芹菜客户端(Flask)和工人,现在一旦工人完成任务,我需要在客户端回调一个函数。这可能吗?

芹菜客户:-

celery_app=Celery('test_multihost', broker='amqp://test:test@<worker_ip>/test_host', backend='rpc')
result= testMethod1.apply_async((param1, param2,param3), link=testMethod2.s())

@celery_app.task
def testMethod2():
    #testMethod2 body.

芹菜工人:-

celery_app=Celery('test_multihost', broker='amqp://test:test@<worker_ip>/test_host', backend='rpc')
@celery_app.task
def testMethod1():
   #testMethod1 body

但问题是函数 testMethod2 是在 celery worker 端执行的,而不是在客户端。

无论如何,我可以在客户端回调该方法吗?

sattva_venu

我使用 celery 信号中的 @after_task_publish 解决了这个问题。代码片段如下:-

@after_task_publish.connect(sender=<registered_celery_task>)
def testMethod2(sender=None, headers=None, body=None, **kwargs):
    #callback body

testMethod2 将在远程机器上的芹菜工作者完成后被调用。在这里,我可以使用headers参数访问 celery worker 的结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

FBSDKLoginKit,注销完成后如何进行回调?

PHP-array_walk完成后回调

在多个函数完成后运行回调

IF/else语句完成后如何运行回调

对话框转换完成后的回调

循环加载函数 - 全部完成后回调?

.forEach完成后执行回调函数

#each完成后如何执行回调?

工作完成后终止愚蠢的工人

所有异步forEach回调完成后的回调

芹菜任务完成后重定向到模板

Javascript和回调并被推迟。google gmail API请求完成后,如何运行函数?

APScheduler 回调函数 - 作业完成后如何在 python 中调用某些功能/模块?

在.each循环内的Jquery回调完成后,如何执行函数

TkInter:如何等到方法完成后才进行回调

Firebase Cloud Function onWrite完成后,如何触发Android客户端回调?

一组工作人员完成后如何执行Sidekiq回调

等待所有回调完成后再返回对象

jQuery:如何在ajax调用完成后回调每个循环?

回调完成后,Aff会继续尝试调用成功

通知完成后被杀死

反应完成后,家长通知孩子

下载完成后如何通知

是否可以在每个承诺完成后运行回调,然后在所有承诺完成后运行另一个?

是否可以在 curl 请求完成后注册一些回调函数来释放资源?

每个异步内部的异步任务:在所有任务和子任务完成后运行回调

遍历数组:每个元素均使用CCAction,但操作完成后仅执行一次回调

pdf导出完成后进行回调

jQuery转换完成后如何获取回调