首页 |  我的博客 |  查看该博主内容分类 | 

django-celery-beat如何激活和停止周期性任务?

激活

只要在PeriodicTask中写入你的任务即会执行(类似写入linux的crontab)

import pytz
from django.conf import settings
from django_celery_beat.models import CrontabSchedule, PeriodicTask

# 普通周期用这个(二选一)
schedule, is_create = IntervalSchedule.objects.get_or_create(
    every=10,
    period=IntervalSchedule.SECONDS,  # DAYS、HOURS、MINUTES、SECONDS、MICROSECONDS、
)
ins = PeriodicTask.objects.create(
    interval=schedule,
    name='interval_name',  # 唯一的任务名称,名字不能重复
    task='interval_task_name',  # 有命名用命名,无则任务的导包路径
    args=json.dumps([5, 10, 15]),  # 异步任务有参数时,可以通过args或者kwargs来设置
    # kwargs=json.dumps({
    #     'be_careful': True
    # }),
    expires=datetime.now() + timedelta(seconds=30),  # 任务的持续时间
)
# crontab周期用这个(二选一)
schedule, is_create = CrontabSchedule.objects.get_or_create(
	minute=0,
	hour=1,
	day_of_month=1,
	month_of_year=1,
	day_of_week=1,
	timezone=pytz.timezone(settings.TIME_ZONE)  # 这里的settings.TIME_ZONE等于'Asia/Shanghai'
)

ins = PeriodicTask.objects.create(
	crontab=schedule,
	name='period_name',
	task='period_task_name',
	args=json.dumps(args),
	kwargs=json.dumps(kwargs),
)
# id = ins.id

停止

删除PeriodicTask的周期任务即可

from django_celery_beat.models import PeriodicTask

PeriodicTask.objects.filter(...).delete()
posted @ 2024-05-28 11:52  Z哎呀  阅读(125)  评论(0)    收藏  举报