django在windows设置定时任务,勉强能用
推荐三篇文章
【Django】Django 定时任务实现(django-crontab+command)
前两篇文章介绍了django-crontab的两种使用方法,网上的资料很多。
一、Windows 版 Crontab [JAVA]
2. Windows 上不像 Linux 那样有很多强大的命令程序,想写个计划任务,确没有好的工具;自己写个工具,又不好管理
- 完全兼容 Linux 版的计划任务,格式 `分 时 日 月 周 命令`
- 支持多行写法,如果命令太长,需要用多行完成,可以在换行的时候未尾加上 "\",
- 记录任务运行日志、错误日志,日志文件可以自由配置
- 有一个专门管理自己脚本的文件夹,里面的脚本可以直接使用在计划任务的 `命令` 中,可以不带路径参数
- 任务运行失败除了记录日志外,还可自动弹窗提醒用户,以防错过一些重要的命令**
- 如果关机了,任务本来应该运行但没得到运行,可以在开机的自动运行这些错过的任务(需要对任务进行配置,默认是不会的)**
- 自动记录你每天的开机时间,关机时间,空闲时间,形成图表显示,方便您了解自己的电脑使用习惯【正在开发中】**
- 更多功能还在开发中,敬请期待...
- 安装 [JDK](http://docs.oracle.com/javase/7/docs/webnotes/install/)
- 下载[nircmd](http://www.nirsoft.net/utils/nircmd.html)(它主要用来隐藏运行的命令界面),把它的可执行文件目录写入你的环境变量PATH中(未安装成功,所以修改了crontab_install.bat和crontab_uninstall.bat文件(下面介绍),也能用,就是每次执行显示命令界面,执行完消失)
- 下载本程序代码;
- 将下载后的文件解压后放到你希望的一个目录下,比如我把它放在 C:\mylike 文件夹上
- 修改 C:\mylike\Crontab-New\bin 下的三个 bat 文件,主要是修改里面的bin目录成你当前的bin目录(未找到crontab_unstall.bat文件中的目录,所以没修改)
- 直接双击运行 crontab\_install.bat(主要是在Windows上添加了一个[计划任务](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx)),计划即启动完成。需要卸载的运行 crontab\_uninstall.bat就行, crontab.bat 是一个用户脚本,可以用来查看自己的计划任务,查看它的下次运行时间,同时还可以强制运行一个指定的任务
二、修改crontab\bin目录下的两个文件:crontab_install.bat和crontab_unstall.bat
@ECHO OFF
rem schtasks /create /tn "MyCrontabTask" /tr "nircmd.exe exec hide java -cp D:\develop\crontab-master\bin com.main.Crontab -r" /sc MINUTE /mo 1
schtasks /create /tn "MyCrontabTask" /tr " java -cp D:\develop\crontab-master\bin com.main.Crontab -r" /sc MINUTE /mo 1 pause
crontable_uninstall.bat,执行的时候总是出错,就都注释了。
@echo off schtasks /delete /tn "MyCrontabTask" /f rem IF errorlevel 1 GOTO ERROR
rem IF errorlevel 0 GOTO SUCCESS
rem
rem :ERROR
rem echo 您还没有安装,无须卸载!
rem GOTO END
rem
rem :SUCCESS
rem echo 您已成功卸载!
rem GOTO END
rem
rem
rem :END
pause
修改了这两个文件后,在conf/schedule.conf中写好定时任务后,运行crontab_install.bat创建并添加定时任务,此时就已经在执行了,可以运行 crontab -l 查看任务,运行crontab_uninstall.bat删除定时任务。这样就可以在windows下执行定时任务了,向linux一样。
定时任务有了,如何在django下执行呢?django-crontab模块
三、通过django-crontab模块获得任务执行脚本
如何使用django-crontab配置定时任务,在这两篇文章中有介绍:
【Django】Django 定时任务实现(django-crontab+command)
但是在windows下,运行python manage.py crontab add以及crontab的其他命令时都提示
系统找不到路径
在python-3.6.3\Lib\site-packages\django_crontab\crontab.py源码中发现两个函数read和write:
每次添加和执行任务时都会执行这两个函数,但是一些命令应该不适合windows下使用,所以修改这两个函数如下:
# def read(self):
# """
# Reads the crontab into internal buffer
# """
# self.crontab_lines = os.popen('%s -l' % self.settings.CRONTAB_EXECUTABLE).readlines()
#
# def write(self):
# """
# Writes internal buffer back to crontab
# """
# fd, path = tempfile.mkstemp()
# print(tempfile.mkstemp())
# tmp = os.fdopen(fd, 'w')
# for line in self.crontab_lines:
# tmp.write(line)
# tmp.close()
# os.system('%s %s' % (self.settings.CRONTAB_EXECUTABLE, path))
# os.unlink(path) def read(self):
"""
Reads the crontab into internal buffer
"""
tmp = open('%s/runjob' % self.settings.CRONTAB_EXECUTABLE,'r')
self.crontab_lines = tmp.readlines() def write(self):
"""
Writes internal buffer back to crontab
"""
tmp = open('%s/runjob' % self.settings.CRONTAB_EXECUTABLE,'w')
for line in self.crontab_lines:
tmp.write(line)
tmp.close()
并修改python-3.6.3\Lib\site-packages\django_crontab\app_settings.py的CRONTAB_EXECUTABLE:
# self.CRONTAB_EXECUTABLE = getattr(settings, 'CRONTAB_EXECUTABLE', '/usr/bin/crontab')
self.CRONTAB_EXECUTABLE = getattr(settings, 'CRONTAB_EXECUTABLE', 'crontab')
改成已知目录,我这里改成了项目根目录下的crontab,再次运行python manage.py crontab add会在项目根目录下crontab下生成一个文件:runjob
在项目配置文件的settings.py中定义了这样一个定时任务:
CRONJOBS = [
# 表示每过一分钟执行一次
# ('*/1 * * * *', 'timeupdate.time_task.task'),
('*/1 * * * *', 'django.core.management.call_command', ['timetask'],{},'>> log/run.log') #timetask函数中只有一个print()
# 后面的>> /tmp/testapi_crontab.log' 表示将定时执行的函数的打印结果输出到已经在本机中建立好的log文件中,方便调试。
对应生成的文件内容runjob如下:
*/1 * * * * D:\develop\python-3.6.3\python.exe F:\Workspaces\xinzhi\manage.py crontab run 1ddadd8c6b5dcf1b27092df977feaf6f >> log/run.log # django-cronjobs for xinzhi
将runjob文件中的内容复制到conf/schedule.conf中:注意不要复制注释。
添加并启动定时任务就行了。
直接在django中添加django-crontab,运行后一点反应都没有,还没搞明白为什么?
django在windows设置定时任务,勉强能用的更多相关文章
- Windows 设置定时任务
cmd 运行 control 命令打开控制面板,找到 管理工具 -> 任务计划程序 一.添加定时任务 创建任务 基本信息 触发器,这里设置开机启动 操作,这里执行一个程序.若为脚本,注意起始于路 ...
- windows下定时任务设置
Linux 系统可以通过crontab -e 设置定时任务,Windows系统没有crontab命令,但是Windows系统有跟crontab命令比较接近的命令: schtasks 命令. # 设置定 ...
- django中设置定时任务
django中设置定时任务 在django中设置定时任务我们可以借用django-crontab这个第三包来实现 django-crontab只能在linux系统下使用 安装: pip install ...
- Django+Celery框架自动化定时任务开发
本章介绍使用DjCelery即Django+Celery框架开发定时任务功能,在Autotestplat平台上实现单一接口自动化测试脚本.业务场景接口自动化测试脚本.App自动化测试脚本.Web自动化 ...
- Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...
- 详解PHP设置定时任务的实现方法
详解PHP设置定时任务的实现方法 一.总结 一句话总结: 1.ignore_user_abort(true)是什么意思? 无论客户端是否关闭浏览器,下面的代码都将得到执行 2.set_time_lim ...
- window下设置定时任务及基本配置
### window下设置定时任务及基本配置 轉載請註明出處: https://www.cnblogs.com/funnyzpc/p/11746439.html |****************** ...
- 使用SQL Server 2005作业设置定时任务
公司有一个老项目由于直接把终端拍摄的图片以二进制的形式保存到数据库中,数据库比较大所以需要经常删除这些冗余数据,手动删除费时费力,项目组长让我把这些操作变成自动的,每天执行一次,只保留最近两个月的图片 ...
- windows 设置脚本IP
毫无疑问,在windows设置IP非常方便,因为有操作简单,直观的界面.通过图形用户界面设置IP在一般情况下是足够.但是,对于那些谁经常出差,由人产生的转换工作,这样的变化IP无疑耗时且不方便.假设一 ...
随机推荐
- python基础-第七篇-7.4异常处理
异常基础: 异常处理首先要捕获异常,不让程序中断,也不让错误信息直接呈现出来,然后就是你该怎么处理异常,以什么方式显示 try: pass except Exception,ex: pass 在需要用 ...
- mapjoin与reducejoin
一.mapjoin 1.Mapper类 package com.css.mapjoin; import java.io.BufferedReader; import java.io.FileInput ...
- 使用LoadRunner的Web(HTTP/HTML)协议录制手机app脚本
一.打开HP Virtual User Generator,创建虚拟用户脚本,选择Web(HTTP/HTML)协议:
- 源码包安装(Python mysql redis)
一 源码包安装 (1)python3.6源码包安装 ./configure ------> 定制功能 make make install mysql 源码包 cmake make make i ...
- sql server中的孤立用户
此问题出现在数据库的移值上.移值后,数据库的登陆名和数据库用户名孤立,原数据中,用建立的用户名密码登陆可以访问数据库,但是移值后就不能访问了.而且如果您尝试向该登录帐户授予数据库访问权限,则会因该用户 ...
- 005-maven坐标和依赖
1.何为Maven坐标 groupId.artifactId.version.packaging.classifier 中央仓库:http://repol.maven.org/maven22.坐标详解 ...
- PHP 基础篇 - PHP 正则官方文档汇总
一.PCRE 正则语法 下面是 PHP 的 PCRE 正则语法(模式语法)相关文档,详情请查阅相关链接: 简介 分隔符 元字符 转义序列(反斜线) Unicode字符属性 锚 句点 字符类(方括号) ...
- 模块讲解----sys
sys:跟python解释器相关的信息 #命令行参数list,第一个元素时程序本身路径 print(sys.argv) 注意:执行脚本时,可以传参数. #退出程序,正常退出时exit(0) sys.e ...
- Objective-C中的alloc和init问题
从开始学的NSString *name=[[NSString alloc] init] 起,仅仅这句话是分配内存空间,一直在用,从来没考虑过它的内部是怎么实现的.今天无意中看到了这一句代码: NSSt ...
- jquery模拟点击A标签的问题
我尝试过多次用jQuery模拟用户点击a标签的功能,但都没有成功,并且困扰了很久. 先看下边的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <htm ...