celery 停止任务_Python – 从另一个队列重试失败的Celery任务

我正在向Celery的网络服务发布数据.有时,由于互联网关闭,数据不会发布到Web服务,并且任务会在发布之前无限次重试.重新执行任务是不必要的,因为网络已关闭,因此不需要再次重新尝试.

我想到了一个更好的解决方案,即如果任务失败三次(重试3次),则转移到另一个队列.此队列包含所有失败任务的列表.

现在,当互联网启动并且数据通过网络发布时,即任务已从正常队列完成,然后它开始处理任务失败的队列中的任务.

这不会浪费CPU内存一次又一次地重试任务.

这是我的代码: – 截至目前,我只是再次重试这项任务,但我怀疑这是否是正确的做法.

@shared_task(default_retry_delay = 1 * 60, max_retries = 10)

def post_data_to_web_service(data,url):

try :

client = SoapClient(

location = url,

action = 'http://tempuri.org/IService_1_0/',

namespace = "http://tempuri.org/",

soap_ns='soap', ns = False

)

response= client.UpdateShipment(

Weight = Decimal(data['Weight']),

Length = Decimal(data['Length']),

Height = Decimal(data['Height']),

Width = Decimal(data['Width']) ,

)

except Exception, exc:

raise post_data_to_web_service.retry(exc=exc)

如何同时维护2个队列并尝试从两个队列执行任务.

Settings.py

BROKER_URL = 'redis://localhost:6379/0'

CELERY_ACCEPT_CONTENT = ['json']

CELERY_TASK_SERIALIZER = 'json'

CELERY_RESULT_SERIALIZER = 'json'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值