Celery 有时不创建任务
Celery sometimes do not create tasks
我正在开发 Python API,它使用 Celery 与 Redis 和 RabbitMQ 来管理我的消息。有时,当我向队列提交一些任务时,它不会收到我期望的消息,它一直是空的,当手动重试它们时,它们可能 运行。它错过的消息通常是相同的,但我不明白为什么某些特定的参数有时会起作用。
我尝试了很多代码来提交消息。
第一个:
advertising_price_set_item.delay(account_id=account.id, tool_id=tool_id,
ml_item_id=advertising.external_id,
price=price, process_id=process_id)
第二个:
advertising_price_set_item.apply_async(kwargs={'account_id': account.id, 'tool_id': tool_id,
'ml_item_id': advertising.external_id,
'price': price, 'process_id': process_id}, retry=True)
最后:
try:
advertising_price_set_item.apply_async(kwargs={'account_id': account.id, 'tool_id': tool_id,
'ml_item_id': advertising.external_id,
'price': price, 'process_id': process_id}, retry=True,
retry_policy={'max_retries': 44,
'interval_start': 0,
'interval_step': 0.2,
'interval_max': 0.2},)
except Exception as e:
print(e)
logging.error(traceback.format_exc())
但它们都在某个时候失败了,我从未收到任何异常或错误消息。
RabbitMQ 中的消息如下所示:
{'user_id': 1, 'tool_id': 1, 'ml_items_id': ['A123', 'B123', 'C123'], 'price_premium': 0.01, 'price_classic': 0.01, 'price_free': 0.01, 'process_id': 1}
我无法找到为什么有时消息会在 Celery 和 RabbitMQ 之间消失的答案,但至少我发现将我的代理更改为 Redis 解决了我的问题!
如果您遇到消息丢失或未发送到 RabbitMQ 的问题,请尝试将您的代理更改为 Redis。
我正在开发 Python API,它使用 Celery 与 Redis 和 RabbitMQ 来管理我的消息。有时,当我向队列提交一些任务时,它不会收到我期望的消息,它一直是空的,当手动重试它们时,它们可能 运行。它错过的消息通常是相同的,但我不明白为什么某些特定的参数有时会起作用。
我尝试了很多代码来提交消息。 第一个:
advertising_price_set_item.delay(account_id=account.id, tool_id=tool_id,
ml_item_id=advertising.external_id,
price=price, process_id=process_id)
第二个:
advertising_price_set_item.apply_async(kwargs={'account_id': account.id, 'tool_id': tool_id,
'ml_item_id': advertising.external_id,
'price': price, 'process_id': process_id}, retry=True)
最后:
try:
advertising_price_set_item.apply_async(kwargs={'account_id': account.id, 'tool_id': tool_id,
'ml_item_id': advertising.external_id,
'price': price, 'process_id': process_id}, retry=True,
retry_policy={'max_retries': 44,
'interval_start': 0,
'interval_step': 0.2,
'interval_max': 0.2},)
except Exception as e:
print(e)
logging.error(traceback.format_exc())
但它们都在某个时候失败了,我从未收到任何异常或错误消息。
RabbitMQ 中的消息如下所示:
{'user_id': 1, 'tool_id': 1, 'ml_items_id': ['A123', 'B123', 'C123'], 'price_premium': 0.01, 'price_classic': 0.01, 'price_free': 0.01, 'process_id': 1}
我无法找到为什么有时消息会在 Celery 和 RabbitMQ 之间消失的答案,但至少我发现将我的代理更改为 Redis 解决了我的问题!
如果您遇到消息丢失或未发送到 RabbitMQ 的问题,请尝试将您的代理更改为 Redis。