Django--定時任務apscheduler的使用
- apscheduler定時任務的使用
- 1、安裝包
- 2、配置settings.py
- 3、在manage.py的文件同級目錄下創建文件scheduler.py
- 4、在項目的urls.py中調用這個定時計劃
- 5、然后啟動項目 python manage.py runserver,在admin中查看就能看到你的定時任務及執行的時間了,下面以我的定時任務為例看一下圖片
apscheduler定時任務的使用
在寫一個興趣班教務管理的小程序時,使用了Django后臺來管理數據庫,由于每天要根據現有設定的班級進行課表的更新,所以需要一個定時器,但是開發環境是在windows上,后臺部署在linux上,問了chatGPT,說是apscheduer支持跨平臺使用,然后就選了這個,以下是使用過程,按chatGPT給的代碼,一次成功,比百度出來的效果好多了。
1、安裝包
pip install apscheduler
2、配置settings.py
# settings.pyINSTALLED_APPS = [# other apps'django_apscheduler',
]# Configure the Django APScheduler
SCHEDULER_API_ENABLED = True
3、在manage.py的文件同級目錄下創建文件scheduler.py
# scheduler.pyfrom apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
from datetime import datetime, timedelta
from django.contrib.auth.models import User# Create a scheduler
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
register_events(scheduler)# Define the task functions
def count_users():user_count = User.objects.count()print(f"Total number of users: {user_count}")def update_database():# Update database logic herepass# 在7天后這個時間,執行一下任務,run_date只是一次,所以只會執行一次
# Register the task functions with the scheduler
@register_job(scheduler, "date", run_date=datetime.now() + timedelta(days=7), id="count_users_job", replace_existing=True)
def count_users_job():count_users()
# 這個沒有指定哪天,只是指定小時,所以會在每天的12點,執行這個任務
@register_job(scheduler, "cron", hour=12, id="update_database_job", replace_existing=True)
def update_database_job():update_database()
4、在項目的urls.py中調用這個定時計劃
# urls.pyfrom django.urls import path
from .scheduler import schedulerurlpatterns = [# other URL patterns
]# Start the scheduler
scheduler.start()