文档章节

Celery: 延时关闭,未支付订单

hyhlinux
 hyhlinux
发布于 10/10 19:15
字数 214
阅读 59
收藏 0

1.调用微信支付前,生成订单, 同时启动延时任务


2.延时任务,待时间到达后,删除未支付订单

@celery_app.task
def delay_close_order(order_info_id):
    """
    delay_close_order.apply_async((8, ), countdown=600)
    [2019-10-10 18:52:14,443: INFO/MainProcess] Received task: core.tasks.delay_close_order[b993d9f8-9eed-49b0-bfc3-56d4a3c73c94] eta:[2019-10-10 19:02:14.435672+08:00]

    :param order_info_id:
    :return:
    """
    logger.info('delay_close_order order_info_id:{}'.format(order_info_id))
    # 1.未支付
    # 2.时间超过10min
    instance = OrderInfo.objects.filter(pk=order_info_id).filter(~Q(pay_status=OrderStatusChoice.TRADE_SUCCESS)).first()
    if not instance:
        return dict(
            msg='order_info_id:{} filter None'.format(order_info_id),
            order_info_id=order_info_id,
            order_info_item=None,
        )

    with transaction.atomic():
        if instance.pay_status == OrderStatusChoice.PAYING:
            instance.is_deleted = True
            update_item_line = OrderInfoItem.objects.filter(order=instance) \
                .filter(status=OrderItemStatusChoice.UN_USED) \
                .filter(is_deleted=False) \
                .update(is_deleted=True)
            instance.save()
            msg = 'delete_order_after_time instance:{} update_item_line:{}'.format(instance, update_item_line)
            logger.info(msg)
    # return "Run function 'waste_time' finished."
    return dict(msg=msg, order_info_id=instance.id, order_info_item=list(instance.order_info_item.all().values('id')))

© 著作权归作者所有

上一篇: django orm
下一篇: Celery: 任务KeyErr
hyhlinux
粉丝 8
博文 187
码字总数 63271
作品 0
海淀
程序员
私信 提问
线下移动支付提单流程问题

现在手里在做一个ERP系统,门店收银台在使用微信、支付宝的条码支付和扫码支付的系统流程不好控制,请高手给点指点。 两种思路: 1、先提交系统订单信息,支付状态为未支付,然后扫顾客码或顾...

mako
2016/06/15
249
3
未支付订单30分钟后,自动取消

未支付订单30分钟后,自动取消 生成订单时发起延时30分钟的任务 OrderSchedule OrderFailureJob SpringContextHolder 在xml中声明或者注解 另外 如果有消息队列可以发送延时消息,来处理...

AmeeLove
2018/04/10
0
0
智能停车平台线上系统优化处理总结

春节前我们智能停车平台出现,用户支付成功通知停车能力提供平台延时较高,最大达到了5分钟,造成车场车辆积压严重,客诉很严重。 出现的问题上面描述了,先整体说明一下智能停车的线上支付整...

Tree
2018/02/22
135
0
听说 Django 与 celery 配合更美味

注:本文使用的开发环境如下,如不同系统或环境之间可能存在差异,本文不做其它说明 操作系统 : MacOS 10.13.4 Python版本 : Python 3.5.4 Django版本 : 2.0.5 celery 版本 : 4.1.0 celery后...

土豆豆一只
2018/05/14
0
0
对接支付宝使用合并支付但中断的问题

我的电商项目里对接了支付宝, 现在考虑合并支付方案, 可以多个订单一起支付; 实施过程有个问题, 如果跳转到支付宝后用户中断支付, 之后又重新组合多个订单一起支付, 而且两次合并支付订单列表...

sanzado
2017/09/22
595
1

没有更多内容

加载失败,请刷新页面

加载更多

用VideoView播放视频出现Can't play this video原因

见鬼了,两个工程一个能播放,一个不能播放,代码都一样,最后发现 android:usesCleartextTraffic="true" 增加这句话就可以播放了

Domineering
22分钟前
3
0
Linux JDK 安装与配置

一、下载 JDK 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 系统是 CentOS 7 X64的,进入系统选择相应的安装包下载,这里下载压缩包。...

HuaiAnGG
23分钟前
1
0
面试复盘

shared_ptr 和 weak_ptr 的区别. 一个有向图有几个圈, 计数。 A,B 胜的概率分别为 1/2, 1/2; A胜两局赢,B胜3局赢, 最少几局可定胜负, A 胜的概率,B胜的概率. 他们采用的是时序ARMA 图论...

MtrS
24分钟前
3
0
什么样的人要学点python编程?请你对号入座

什么样的人需要学点python编程? 时代越来越不一样了,编程这种专业程序员的工作,已经开始应用于各种其他日常工作中,就以前象征着互联网的电脑,现在早已进入普通人家。 那么什么样的人需要...

这人就爱编程
36分钟前
4
0
哪吒之魔童降世的背景音乐怎么提取 视频中提取音频的方法

随着国漫的不断崛起一大批优质的动漫正向我们袭来,从大鱼海棠到大圣归来再到我们现在的哪吒让我们看到国漫质的飞跃,也让我们对国漫充满信心,前段时间哪吒之魔童降世以国产第二的票房下线到...

cenfeng123
40分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部