【Django_apscheduler的使用】

Django_apscheduler的使用


1.安装依赖包

 pip install django-apscheduler

2.创建一个新的app

python manage.py startapp test
# 目录结构:纯手打,文件顺序不要在意
djangoproject
	settings.py
	urls.py
apps
	test
		models.py
		view.py
		admin.py
		apps.py
manage.py

3.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',
    'apps.test'	# 注意,我这里是在外层包了一个apps的文件夹
]

4.在test文件夹中新建urls.py

# 目录结构:纯手打,文件顺序不要在意
djangoproject
	settings.py
	urls.py
apps
	test
		models.py
		view.py
		admin.py
		apps.py
		urls.py
manage.py

在urls.py中添加如下代码

from django.urls import path
from apps.test import views

urlpatterns = [
]

打开apps.py,并输入如下代码

from django.apps import AppConfig


class TestConfig(AppConfig):
    name = 'apps.test'
    

5.打开djangoproject中的urls.py,输入如下代码

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('apps.test.urls')),
]

6.执行迁移

python manage.py makemigrations
python manage.py migrate

7.在test文件夹中的view.py中输入下面的代码

from django.shortcuts import render

# Create your views here.
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job,DjangoResultStoreMixin

# 实例化调度器
scheduler = BackgroundScheduler()
# 开启定时工作
# 调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")


# 设置定时任务,选择方式为interval,时间间隔为10s
# 另一种方式为每天固定时间执行任务,对应代码为:
# @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time')
@register_job(scheduler, "interval", seconds=10, replace_existing=True)  # replace_existing=解决第二次启动失败的问题
def my_job():
    # 这里写你要执行的任务
    pass


# register_events(scheduler)    最新的django_apscheduler已经不需要这一步
scheduler.start()

8.重点来了
如果你在完成上述操作后,某一天不小心删除的django默认使用的sqlite或者mysql数据库需要重建,
你又需要执行迁移
那请将第七步view.py 中的代码注释掉,执行迁移。迁移完成在打开注释。
不然,执行迁移时,会失败。

你可能感兴趣的:(每天学习一点点,python)