栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.查看间隔任务执行结果

间隔任务生成器不断往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生成间隔执行任务即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977651.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号