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