Django-Apscheduler 定时任务
Posted 小小菜_v
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-Apscheduler 定时任务相关的知识,希望对你有一定的参考价值。
Apscheduler 定时任务
django 框架中使用定时任务,创建一个py文件crontab.py,代码如下:
import logging
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
from user.views import crontab_send_mail
LOG = logging.getLogger(__name__)
try:
# 实例化调度器
scheduler = BackgroundScheduler()
# 调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")
register_events(scheduler)
scheduler.start()
except Exception as e:
print(e)
# 有错误就停止定时器
scheduler.shutdown()
def send_mail(value):
"""test定时工作"""
LOG.error('{} {} send mail'.format(datetime.now(), value))
def send_mail_test(value):
"""test定时工作"""
print('{} {} send mail test'.format(datetime.now(), value))
# 每12s调一次任务
scheduler.add_job(send_mail_test, 'interval', seconds=12,
max_instances=1, coalesce=True, id="send_mail_test")
# 周一到周五早上9:30定时发送邮件
scheduler.add_job(crontab_send_mail, 'cron', day_of_week='mon-fri',
hour='9', minute='30', max_instances=1, coalesce=True, id="crontab_send_mail")
在urls.py文件中导入模块
from django.conf.urls import url
from . import views
# 导入定时任务,每次服务重启时,url文件只会执行一遍
from .crontab import scheduler
urlpatterns = [
url(r'^login$', views.login, name="login"),
]
后台启动django,将会在数据库中生成2张表记录任务名和任务的异常信息:django_apscheduler_djangojob,django_apscheduler_djangojobexecution
以上是关于Django-Apscheduler 定时任务的主要内容,如果未能解决你的问题,请参考以下文章