gpt4 book ai didi

redis - celery 和丢失的消息

转载 作者:可可西里 更新时间:2023-11-01 11:37:06 28 4
gpt4 key购买 nike

以下代码片段启动了我的 Celery 安装中的任务:

tasks.py:

@app.task(ignore_result=False)
def asyncTransactionTask(txid):
Here I do something with txid and do not schedule additional tasks

@app.task(ignore_result=True)
def asyncCheckNotifications(*args):

try:
payments = # get an array of values
payments_tasks = []
for payment in payments:
payments_tasks.append(asyncTransactionTask.s(payment))

chain(group(payments_tasks) | asyncCheckNotifications.subtask()).apply_async(countdown=60)
except Exception as e:
logger.error(str(e))
asyncCheckNotifications.apply_async(countdown=10)
raise e

asyncCheckNotifications.delay()

我希望看到 asyncCheckNotifications 方法大约每分钟运行一次,而我每 分钟收到一次。

此外,如果我检查计划任务 (celery -A myapp inspect scheduled),我会看到方法执行已适当安排,但当我到达超时时,它只是被另一个替换安排下一分钟,但没有任何运行。

我正在使用 Celery 3.1.8。消息代理是 RabbitMQ 3.2.4。

最佳答案

与此同时,我通过替换以下内容解决了我的问题:

chain(group(payments_tasks) | asyncCheckNotifications.subtask()).apply_async(countdown=60)

具有以下内容:

    chain(group(payments_tasks) | asyncCheckNotifications.subtask(countdown=60)).delay()

关于redis - celery 和丢失的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31503267/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com