在django中有时候我们会有一些简单的调度需求,这是可以考虑集成Apscheduler
安装
pip3 install apscheduler pip3 install django-apscheduler
在django的settings.py文件的INSTALLED_APPS加入'django_apscheduler'
执行python manage.py migrate 会在数据库给Apscheduler新生成两张表,任务表和任务执行表
在django任意app的views.py加入以下代码
#views.py from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore, register_job, register_events scheduler = BackgroundScheduler() scheduler.add_jobstore(DjangoJobStore(), 'default') @register_job(scheduler, 'cron', id='test5', hour=17, minute=30) def test_func(): print("hello,django1") @register_job(scheduler, 'interval', id='test6', seconds=30) def test_func2(): print("hello,django2") register_events(scheduler) scheduler.start()
django项目一启动,就会生成两个调度任务,一个每天17:30定时执行,另一个每隔30秒执行
如果想要更细粒度的开启、停止任务,就不能在用django-apscheduler,需要对apscheduler做进一步的开发。