Celery 时间问题

我们的支付平台需要推送成功订单给业务系统。这个大部分的时间用在了请求上。所以我们必须要用线程协程这些东西,最后选用了celery。配置的时候自然而然的选择的Asia/shanghai,其他的没问题,用的时候显然celery自己本身也计算了时差问题。但是但我们设置重试的时候,里面还是按照utc时间来执行的。我去官网看了一下说了python和celery哪一步不知道哪里出了问题还在排查。现在我只好每次重试手动添加eta时间。
from celery import Celery
app = Celery()
app.config_from_object('mytest.config')
下面是配置内容
# 只是写了一点简单配置。有需要的要进行路由和交换机的配置
BROKER_URL = 'redis://**********:6379/5'
CELERY_RESULT_BACKEND = 'redis://**********:6379/6'

CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24
CELERY_ACCEPT_CONTENT = ["json"]




from mytest.mycelery import app
# from payment_worker import celery
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@app.task(bind=True, name='push_charge_order', max_retries=10, default_retry_delay=1*6)
def push_charge_order(self, trade_no):
    try:
        import os
        print(os.getpid())
        print(self.request.retries)
        print(trade_no)
        print('asdsd'+1)
    except Exception as e:
        logger.error(str(e))
        import datetime
        timedelta = datetime.timedelta(seconds=pow(2, self.request.retries))
        raise self.retry(exc=e, eta=datetime.datetime.now() + timedelta)

猜你喜欢

转载自blog.csdn.net/weixin_42068117/article/details/80088558