首页 > 其他分享 >django 设置定时任务

django 设置定时任务

时间:2023-06-15 20:23:51浏览次数:64  
标签:设置 django apscheduler 任务 scheduler contrib 定时

django设置定时任务,网上百度了好几种方式,试了这两种方式,简单有效:

例如,我们要设置最简单的执行场景,5s输出一次helloworld。

(1)通过while True设置定时任务

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 中注册

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文件中,添加一句导入该文件(导入该文件的啥都行,python解释器的运行机制,当有导入语句的话, 会从上往下执行该py文件)
import .auto_task.run


这些都设置好之后, 当我们在python manage.py runserver的时候,它就自行启动并定时执行该任务了,不用人为干预了

标签:设置,django,apscheduler,任务,scheduler,contrib,定时
From: https://www.cnblogs.com/lhg37927/p/17483927.html

相关文章

  • sftp 设置仅能访问自己目录的用户
    1.创建一个目录,owner为root,权限为750或755,此处为/home/test01添加一个用户test01,home目录设置为/home/test01再创建一个子目录用于用户上传:/home/test01/upload,owner为test01,$mkdir/home/test01$chownroot:test01/home/test01$mkdir/home/test01/upload$chownt......
  • 02项目数据库隐藏密码,封装logger,环境变量的设置,封装全局异常,Response,开启media访问,前
    1项目数据库之隐藏密码#我们直接把mysql的用户名和密码写死在了代码中----》后期可能会存在风险----》代码如果泄露----》mysql的用户密码泄露----》可以远程登录----》脱裤(拖库)----》所有数据会被黑客获取到----》卖钱#华住---》在代码中把数据库用户名和密码写死了----》......
  • [转][Java]入门设置
    1、JDK使用1.8_3712、下载公司的settings.xml文件,覆盖到X:\maven\conf目录下3、修改settings.xml中的localRepository配置为本机资源位置4、在IDEA里设置JDK版本5、运行项目,会使用1XXX端口,公司自有应用端口范围:10000~199996、通过http://localhost:1XX......
  • 关于vue 使用setInterval定时器关闭失效的问题 原因为事件传播
    /****data.isPlay为显示那个按钮**startHandle开始定时器setInterval**pauseHandle,stopHandle理解为关闭定时器就好了clearInterval**/<viewclass="btn"@click.stop="startHandle"><viewclass="btn-statusbtn-play"><view......
  • python使用aiohttp通过设置代理爬取基金数据
    说到python爬虫,我们就会想到它那强大的库,很多新手小白在选择框架的时候都会想到使用Scrapy,但是仅仅停留在会使用的阶段。在实际爬虫过程中遇到反爬机制是再常见不过的,今天为了增加对爬虫机制的理解,我们就通过手动实现多线程的爬虫过程,同时引入IP代理池进行基本的反爬操作。这里我们......
  • Django中间件案例由浅入深+实战
    Django中间件案例由浅入深+实战原文链接:https://pfertyk.me/2020/04/getting-started-with-django-middleware/Django具有许多有用的功能特色,其中之一便是中间件。在本文中,我将简要解释中间件如何工作以及如何开始编写自己的中间件。这篇文章中包含的源代码可在GitHub上找到......
  • 医院设置——锁定和发送签名
    //8、医院设置锁定和解锁:锁定时则无法对医院设置进行操作,只有status=1解锁了才能操作@PutMapping("lockHospitalSet/{id}/{status}")publicResultlockHospitalSet(@PathVariablelongid,@PathVariableIntegerstatus){//根据id查询医院设置信息......
  • 6、华为设备telnet/ssh远程访问设置(与华三类似)
    一、telnet远程访问协议配置1、telnet远程控制拓扑图实现功能:AR1路由器模拟访问主机,AR2路由器通过配置telnet远程控制协议,实现远程控制。 2、项目操作步骤AR1基本配置(客户端)<Huawei>system-view[Huawei]sysnameAR1[AR1]interfaceGigabitEthernet0/0/0[AR1-GigabitEt......
  • django 实现linux运维管理平台
    概述使用django实现一个linux运维管理平台,可以实现注册登录,机器管理,服务器批量操作,服务器性能监控。详细一、准备工作1、需要准备什么环境我是在自己的云服务上编写和运行的,centos7.2的环境,python是系统自带的python2.7.5,django安装的1.8.5版本的。数据库使用的mysql......
  • Linux系统,使用crontab定时执行备份脚本后,备份为空的解决方案
    使用crontab执行备份.sh脚本后备份为空,但是自己手动执行是没问题的参考[(163条消息)定时任务执行mysql备份脚本备份结果为空_mysql备份脚本日期有空格怎么回事_玉无暇的博客-CSDN博客](https://blog.csdn.net/weixin_51009330/article/details/120431278#:~:text=用crontab,自......