django 设置定时任务
django设置定时任务,网上百度了好几种方式,试了这两种方式,简单有效:
例如,我们要设置最简单的执行场景,5s输出一次helloworld。
(1)通过while True设置定时任务
1 2 3 4 5 6 7 8 | import time def run(): print ( "hello,world" ) if __name__ = = '__main__' : while True : run() time.sleep( 5 ) |
(2)依赖django_apscheduler 插件
Django 启动定时任务使用django_apscheduler 插件
1.安装django_apscheduler 插件
Pip install django_apscheduler
2 . 将django_apscheduler 作为一个产品在settings 的INSTALLED_APPS 中注册
1 2 3 4 5 6 7 8 9 | INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , "django_apscheduler" , ] |
3 . python manage.py migrate 直接执行数据库迁移命令,该命令会创建2张表,定时任务以及执行情况会被存储在数据库中,
第一张表用于存储所有的定时任务,
第二张表用于存储定时任务的执行情况
4 . 在你想要创建定时任务的app的目录下,创建任意的一个名称的py文件,在该文件内编写定时任务相关的代码
# 这里是需要定时执行的脚本代码
def run(): print("hello,world") #这里是创建django_apscheduler 任务的固定代码 from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore, register_job # 1.实例化调度器 scheduler = BackgroundScheduler() # 2.调度器使用DjangoJobStore() scheduler.add_jobstore(DjangoJobStore(), "default") # 3.设置定时任务,选择方式为interval,时间间隔为10s
date:希望在某个时间仅运行一次,# 例如在2023-04-14 20:12:00 仅执行一次 interval:要以固定的时间间隔运行作业时使用, # 任务隔10分钟执行一次,还可以设置days、hours、seconds参数也可以设置日期范围,start_date-end_date cron:每天固定时间执行任务, 例如每天9点30分10秒 执行一次,
@register_job(scheduler, 'cron', hour='9', minute='30', second='10',id='task_time')
try: @register_job(scheduler, "interval", seconds=10, replace_existing=True) def my_job(): # 这里写你要执行的任务 print('我是定时任务') run()
except Exception as e: print(e) # 遇到错误,停止定时器 scheduler.shutdown()
# 4.开启定时任务
scheduler.start()
5.让程序跑起来,也就是在服务启动的时候,就开始运行该定时任务(如果不设置触发,上边的所有努力就都白干了)
利用python的import实现
在该脚本的app所在urls.py文件或者项目的urls.py中,导入该文件(导入该文件的啥都行,python解释器的运行机制,当有导入语句的话, 会从上往下执行该py文件)
这些都设置好之后,
当我们在python manage.py runserver的时候,它就自行启动并定时执行该任务了,不用人为干预了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)