在芹菜python中,任务输出并行处理任务



我创建了一个任务

@app.task
def mainTask(msg,nc):
    decryptFunction.decryptFunc(msg)
    if len(decryptFunction.messageJson):

我会异步接收数据。

def on_message(client, userdata, msg):
    result = mainTask.delay(msg.payload.decode("utf-8"),1)

我需要在5个任务中使用输出decryptrunction.messagejson并同时运行

我建议我从您的要求中理解的内容,而不是将mainTask作为异步,您可以将其他5个任务称为celery任务,从mainTask,即

def mainTask(msg, nc):
     decryptFunction.decryptFunc(msg)
     if len(decryptFunction.messageJson):
         response1 = task1.delay(decryptFunction.messageJson)
         response2 = task2.delay(decryptFunction.messageJson)
         response3 = task3.delay(decryptFunction.messageJson)
         response4 = task4.delay(decryptFunction.messageJson)
         response5 = task5.delay(decryptFunction.messageJson)

,您的on_message函数为:

def on_message(client, userdata, msg):
    result = mainTask(msg.payload.decode("utf-8"),1)

但这假设您的其他5个任务是相互排斥的,并且对一个任务的响应不会影响另一个任务,因为如果不是,则不能使它们变得异步任务。

但是,如果您的mainTask耗时,则可以将其用作Celery任务。

最新更新