首页 > 其他分享 >django中配置apscheduler,并解决运行两次的问题

django中配置apscheduler,并解决运行两次的问题

时间:2022-08-19 19:03:04浏览次数:94  
标签:start py 两次 apscheduler job scheduler django import 执行

创建了一个独立的app,准备把定时器执行的内容放在这里

python manage.py startapp cron_jobs

 

在应用目录下创建目录 autotask

1.创建task.py文件,写入要执行的内容

# -*- coding:utf-8 -*-
"""
" Description: 需要执行的计划任务函数放这里
"
" File : tasks.py.py
" Autho: ddzfeng
" Date : 2022-08-19
"""


import time
def hello():
print('执行计划任务执行at:%s' % time.asctime())
print("hello world,间隔1分钟执行一次")


def hello2():
print('执行计划任务执行at:%s' % time.asctime())
print("第二个计划任务的执行,指定时间运行")


2.创建updater.py文件,指定启动定时器和要执行的内容

# -*- coding:utf-8 -*-
"""
" Description: 计划任务的启动和指定制定运行方式
"
" File : updater.py.py
" Autho: ddzfeng
" Date : 2022-08-19
"""
from apscheduler.schedulers.background import BackgroundScheduler
from corn_jobs.autotask.tasks import hello,hello2




def start():
# intitialise
scheduler = BackgroundScheduler()

# Create jod
scheduler.add_job(hello, 'interval', minutes=2) # this job is excecute every one minutes
# scheduler.add_job(hello2, 'interval', minutes=2) # this job is excecute every one minutes
scheduler.add_job(hello2, 'cron', hour=17, minute=15, second=27,id='hello2', replace_existing=True,misfire_grace_time=200, start_date='2022-1-24 00:00:00')

# # start job
scheduler.start()
# scheduler.shutdown()

3.在本应用的 app.py启动(下边ready函数如果不用这个写法也能直接执行,但是会执行2次,或者使用 manage.py runserver --noreload 也行,但是。。。)

from django.apps import AppConfig


from .autotask import updater

import os
class CornJobsConfig(AppConfig):
name = 'corn_jobs'
run_already = False

def ready(self):
run_once = os.environ.get('CMDLINERUNNER_RUN_ONCE')
if run_once is not None:
return
os.environ['CMDLINERUNNER_RUN_ONCE'] = 'True'

# The code you want to run ONCE here
updater.start()


4.在setting.py中加入应用

INSTALLED_APPS = [
   。。。
'corn_jobs.apps.CornJobsConfig',
]


5.后期使用数据库后准备尝试把需要执行的任务,及执行方式放入到数据库中,通过数据库查询的方法将需要自信的内容以及执行的方式进行管理,

但是不确定是否可以,后续再更新。

上面的信息部分是从其他网站查询出来的,部分是自己写的,关于执行两次的问题应该是Django在启动的时候初始化应用的时候被启动了,然后scheduler本身自己也启动了所以执行了两次,但是我是小白,不是很明白里边的调用过程,先实现功能,其他的以后再说吧

标签:start,py,两次,apscheduler,job,scheduler,django,import,执行
From: https://www.cnblogs.com/ddzfeng/p/16603050.html

相关文章

  • django model设置SQL表注释和字段注释
    过修改django配置文件,将model里面的的verbose_name作为数据库的COMMENT,也就是注释信息。第一步:找到如下路径:  注意:如果你是在虚拟环境下搭建的项目,注意到虚拟环境下......
  • django中的cookie与session
    发展史1.早期的时候,网站都没有保存用户功能的需求,所有用户访问网站返回的结果都是一样的,比如新闻、文章等网站!2.但是,随着网站的发展,出现了一些需要保存用户信息的网站,比......
  • Django TextField
    如下图,官方文档中解释含义:即使设置了max_length,只会在前端表单的Textarea框中输入有限制. 并没有在模型表或数据库MySQL中被限制. ......
  • Android EditText的onEditorAction监听事件防止执行两次
    Android的EditText通过setOnEditorActionListener给文本编辑框设置监听事件,但是在其处理方法onEditorAction中的逻辑在每次回车后都触发了两次,这是因为在键盘回车的ACTION_......
  • 16 Django-extra查询
    知识点补充:如何只拿出,dt字段中的年月字段?知识点补充:extra有些时候复杂的sql语句,Django无法去对应。extra(select=None,where=None,params=None,tables=None,ord......
  • django插入数据库报错 1366, "Incorrect string value: '\\xF0\\x9F\\x9A\\xA
     报错: 1366,"Incorrectstringvalue:'\\xF0\\x9F\\x9A\\xA8 是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字......
  • django-haystack使用whoosh创建索引
    快速入门环境安装首先需要清楚以下各个库的作用django是基于python开发的web框架,阅读本文需要了解相关的基础知识django-haystack为Django提供模块化搜索。它具有......
  • Django连接MySQL与正反向迁移命令
    目录连接MySQL方法一:pymysql连接方法二:mysqlclient迁移命令连接MySQL方法一:pymysql连接第一步:修改settings.py配置文件中的DATABASES:DATABASES={'default':{......
  • 服务器部署 Vue 和 Django 项目的全记录
    本篇记录我在一个全新服务器上部署Vue和Django前后端项目的全过程,内容包括服务器初始配置、安装Django虚拟环境、pythonweb服务器uWSGI和反向代理Nginx的使用,......
  • 如果一个线程两次调用start(),会出现什么问题?
    如果一个线程两次调用start(),会出现什么问题?“如果一个线程两次调用start(),会出现什么问题?”如果这个问题出自阿里p6岗位第一面的提问,你能回答出来吗?大家好,我是Mic,一个......