一、环境准备
1、Python版本3.10。
2、Django版本4.0。
pip install django==4.0
3、安装APScheduler
pip install django-apscheduler
注意:一定要高版本,Django版本过低无法使用会报错!!!
二、使用配置
1、创建一个专门存放job的APP。
python manage.py startapp jobs
2、在settings.py中注册django-apscheduler和test
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_apscheduler',
'jobs'
]
3.在jobs文件夹中新建urls.py
在APP jobs/urls.py中添加如下代码
from django.urls import path
from jobs import views
urlpatterns = [
]
4、在项目总路由urls.py中添加jobs.urls
打开djangoproject中的urls.py,输入如下代码
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('jobs/', include('jobs.urls')),
]
- 执行迁移
python manage.py migrate
会创建两张表:
django_apscheduler_djangojob
django_apscheduler_djangojobexecution
- 在jobs子应用中的views.py中输入下面的代码
# # Create your views here.
from apscheduler.schedulers.background import BackgroundScheduler # 使用它可以使你的定时任务在后台运行
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
import time
job_defaults = { 'max_instances': 2 } #增加调度器
scheduler = BackgroundScheduler() # 创建定时任务的调度器对象——实例化调度器
# 调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")
@register_job(scheduler, "interval", seconds=30, id='test_job', replace_existing=True) #replace_existing=True控制同一个任务启动后不会报错
def my_interval_job():
print("调度任务运行中")
scheduler.start() # 控制定时任务是否开启
- 运行django項目
python manage.py runserver
项目启动之后定时任务同步启动。