Django集成Celery异步执行任务(二)

上一篇 Django集成Celery异步执行任务(一)

14.生成间隔任务(intervalschedules),计划任务(crontabschedules),任务执行(periodictasks)序列化类

我的应用是baby_app,所以我在baby_app下创建serializers.py

from django_celery_beat.models import PeriodicTask, IntervalSchedule,  CrontabSchedule
from rest_framework import serializers


class PeriodicTaskSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = PeriodicTask
        fields = '__all__'


class IntervalScheduleSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = IntervalSchedule
        fields = '__all__'
        
class CrontabScheduleSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = CrontabSchedule
        fields = '__all__'

15.生成间隔任务(intervalschedules),计划任务(crontabschedules),任务执行(periodictasks)视图

我的应用是baby_app,所以我在baby_app下创建view.py

from .serializers import PeriodicTaskSerializer, IntervalScheduleSerializer, CrontabScheduleSerializer
from django_celery_beat.models import PeriodicTask, IntervalSchedule,  CrontabSchedule


class PeriodicTasksViewSet(CacheResponseMixin, viewsets.ModelViewSet):
    queryset = PeriodicTask.objects.all()
    serializer_class = PeriodicTaskSerializer


class IntervalScheduleViewSet(CacheResponseMixin, viewsets.ModelViewSet):
    queryset = IntervalSchedule.objects.all()
    # print(queryset, '999999999999999')
    serializer_class = IntervalScheduleSerializer

class CrontabScheduleViewSet(CacheResponseMixin, viewsets.ModelViewSet):
    queryset_source = CrontabSchedule.objects.all()
    queryset = queryset_source
    # print(type(queryset[0].timezone),queryset[0].timezone)
    serializer_class = CrontabScheduleSerializer

16.将视图添加到rest framework路由中

我的应用是baby_app,所以我在baby_app下创建routers.py

from rest_framework import routers
from .views import PeriodicTasksViewSet, IntervalScheduleViewSet, CrontabScheduleViewSet
    
router = routers.DefaultRouter()
router.register(r'periodictasks', PeriodicTasksViewSet)
router.register(r'intervalschedules', IntervalScheduleViewSet)
router.register(r'crontabschedules', CrontabScheduleViewSet)

17.1Django管理后台生成间隔执行任务

1.以下是Celery beat的数据表

在这里插入图片描述

2.在Intervals表生成一条每秒执行的数据

在这里插入图片描述

在这里插入图片描述

3.在Periodic tasks表中生成任务数据

在这里插入图片描述

所有配置完毕,点击保存

在这里插入图片描述

4.启动定时任务插件django_celery_beat

 celery -A djangoProject beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

5.查看间隔任务执行结果

间隔任务生成器不断往Redis发送任务

在这里插入图片描述

worker不断从Redis收取任务并执行返回结果

在这里插入图片描述

17.2Django管理后台生成定时执行任务

1.在Crontab表中生成一条定时数据

在这里插入图片描述
在这里插入图片描述

2.在Periodic tasks表中生成任务数据

在这里插入图片描述

3.查看定时任务执行结果

在这里插入图片描述

18.调用API在管理后台生成间隔执行任务

1.调用/api/intervalschedules/,在Intervals表中插入每3秒执行一行数据

在这里插入图片描述

主键值2会在下一步用到

在这里插入图片描述

2.调用/api/periodictasks/,在periodictasks表中插入间隔执行任务

在这里插入图片描述

3.效果

生产者不断往Redis推送任务

在这里插入图片描述

worker不断接收任务并执行

在这里插入图片描述

19.数据表截图

在这里插入图片描述

20.调用API在管理后台生成计划执行任务

参照API生成间隔执行任务即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值