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()

浙公网安备 33010602011771号