美文网首页
django-celery的定时任务

django-celery的定时任务

作者: brother阿张 | 来源:发表于2017-06-09 20:31 被阅读0次

    本文主要将定时任务,django-celery的配置有很多教程
    周期任务比较简单的,在自带的后台admin页面中中period添加注册的函数就好了

    在app下面的命名为tasks.py的文件

    @task()
    def do_expire_task(physical_order_id):
       from apps.physical.models import PhysicalOrder
       PhysicalOrder.objects.filter(pk=physical_order_id, status=0).update(status=306)
    
    
    def create_expired_physical_order(physical_order):
       crontab_time = {
           "month_of_year": physical_order.order_at.month,
           "day_of_month": physical_order.order_at.day,
           "hour": physical_order.order_at.hour+1,
           "minute": physical_order.order_at.minute
       }
    ## 执行的时间调度
       crontab, _ = celery_models.CrontabSchedule.objects.get_or_create(**crontab_time)
       name = "delay_one_hour_expired{}".format(physical_order.pk)
    ## 注意参数必须是双引号的["11"],
       celery_models.PeriodicTask.objects.create(name=name, task="apps.physical.tasks.do_expire_task", crontab=crontab,
                                                 args='["{}"]'.format(physical_order.pk)
                                                 )
       logger.info('--------------添加{}订单过期--------------'.format(name))
    

    相关文章

      网友评论

          本文标题:django-celery的定时任务

          本文链接:https://www.haomeiwen.com/subject/nmifqxtx.html