python 定时任务系统_Python定时任务,实现自动化的方法

python教程栏目介绍实现自动化的方法。

1. 安装cron

基本上所有的Linux发行版在默认情况下都预安装了cron工具。

即使未预装cron,也很简单,执行几条简单的命令就可手动安装# 检查是否已经预装了cron

service cron status复制代码

安装并启动服务安装:apt-get install cron

启动/停止/重启:service cron start/stop/restart

查询当前任务:crontab -l复制代码

2. 安装检查

安装完成后检查一下是否安装成功,同样使用 status命令查看

出现如下提示表示安装成功:

另外,在ubuntu下可能会出现这样的提示:

这个也表示可以正常使用

3. cron用法

有几个关于cron的简单用法可以了解一下,后面也会通过一个案例详细介绍如何使用

首先,列出当前用户计划的cron作业:crontab -l复制代码

查看其它用户的cron作业:crontab –l –u username复制代码

移除已经计划的cron作业:crontab –r复制代码

4. 调度crontab计划

首先,通过如下命令添加或更新crontab中的任务

第一次进入会要求你选择编辑器,这个根据自己的习惯选择。

选择好之后会进入到这样的一个界面:

用过vim的同学应该对这个界面不陌生,类似的操作:按A键开始编辑,按ESC输入wq保存并退出

重点是最下面的一段内容:m h dom mon dow commmand复制代码

这个其实就是crontab调度作业的一个使用介绍,可以用来设置定时任务。

具体一点的语法是这样的:m h dom mon dow command

* * * * * command

- - - - - -

| | | | | |

| | | | | --- 预执行的命令

| | | | ----- 表示星期0~7(其中星期天可以用0或7表示)

| | | ------- 表示月份1~12

| | --------- 表示日期1~31

| ----------- 表示小时1~23(0表示0点)

------------- 表示分钟1~59 每分钟用*或者 */1表示复制代码

举几个简单的应用案例:每天 02:00 执行任务0 2 * * * command复制代码每天 5:00和17:00执行任务0 5,17 * * * command复制代码每 10min 执行一次任务*/10 * * * * command复制代码在特定的某几个月的周日 17:00 执行任务0 17 * jan,may,aug sun command复制代码

差不多常用的就这些,更多的使用案例还可以参考这个链接:http://linux.51yip.com/search/crontab

上面案例中的command 表示你具体需要执行的任务,例如打印一段话:echo "Hello xiaoyi" >> /tmp/test.txt

复制代码

或者将这段话输出到txt中:echo "Hello xiaoyi" >> /tmp/test.txt

复制代码

或者是你需要执行一个Python脚本:python demo.py filepath复制代码

后面的filepath表示输入的参数args,这个可能有的同学会用到,例如下面的案例中需要输入文件下载路径。

5. 实战

上面的都搞清楚了,就可以开始今天的重头戏了。

首先我们需要每天从ftp服务器中下载最新的任务数据,将数据下载到本地后通过Python进行数据汇总统计,最后将结果存入数据库中,如果期间某个环节出现问题则发送告警邮件。

① Python脚本

首先需要Python脚本完成以下功能:从数据库中获取最新数据日期

从ftp中下载最新数据到本地

对本地最新数据进行汇总统计

统计结果存入数据库汇总

邮件通知

上面这个流程大致的伪代码是这样的:if __name__ == '__main__': """获取最新数据日期"""

latest_date = get_max_date() # 以最新日期为名创建文件夹

download_dir = os.path.join(sys.argv[1], latest_date) if not os.path.exists(download_dir):

os.makedirs(download_dir)

"""从ftp中下载最新数据"""

download_file(latest_date, download_dir) """处理最新数据并保存"""

process_data(latest_date, download_dir)复制代码

邮件监控可以在加一个try catch的异常捕获,有异常发生的时候则发送邮件

Python编辑邮件内容并发送以前也有写过,可以参考下面这个:Python邮件发送

②编写cron任务

打开crontab,编辑如下内容到最后一行,保存并退出

crontab是会自动实时更新任务列表的,如果不放心也可以通过restart命令重启cron 服务【参考文章开头】

这里有个小建议,所有的路径都填写绝对路径

③ 效果监控

如果Python代码没有问题,任务会定时执行。

这里建议可以把自己的command单独在控制台运行下,没有问题的时候再写进到cron任务列表红。

最终小一的定时任务运行截图如下:最下面是ftp文件下载,上面是数据汇总统计

相关免费学习推荐:python教程(视频)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sudo su 和 sudo -s区别

sudo su 和 sudo -s区别 sudo su 和 sudo -s都是切换到root用户,不同的是: sudo su 环境用的是目标用户(root)的环境 sudo -s 环境用的是当前用户本身的环境 posted on 2018-01-08 22:25 老于601 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnbl…

js UTF-8编码转为字符串

// UTF8编码转成汉字字符串 export function revertUTF8(szInput) {var x,wch,wch1,wch2,uch"",szRet"";for (x0; x<szInput.length; x) {if (szInput.charAt(x)"%") {wch parseInt(szInput.charAt(x) szInput.charAt(x),16);if (!wch) {bre…

.Net Core 简洁架构事件(这个不完整,待仔细补充)

.Net Core的架构 - 根据微软官方文档 微软给出了.Net Core的架构方法&#xff0c;无论是在web&#xff0c;azure&#xff0c;uwp等等 微软的github地址&#xff1a;https://github.com/dotnet-architecture/eShopOnWeb 转载于:https://www.cnblogs.com/bijinshan/p/8250512.htm…

原理图中如何连线_Altium Designer10绘制原理图

在进行原理图绘制之前,应先将原理图库与PCB库相关联,在原理图绘制完成后,在生成PCB图,如何将原理图库与PCB库相关联?先进入原理图库,如下图所示。双击元器件文件,进行元器件配置。 元器件配置界面如下图所示。选择Add...进行添加对应的PCB库。 选择浏览进行查找相关PCB库…

vue 父组件与子组件之间的传值(普通传值)

一&#xff0c;子组件向父组件传值&#xff08;$emit&#xff09;&#xff1a; 1、定义子组件 <template><div>子组件:<span>{{childValue}}</span><!-- 定义一个子组件传值的方法 --><input type"button" value"点击触发&q…

NetBeans Java EE技巧3:数据库中的RESTful Web服务

许多现代的Web应用程序正朝着使用HTTP使用无状态通信的方向发展。 REST&#xff08;代表性状态转移&#xff09;体系结构样式通常用于设计网络应用程序&#xff0c;而使用Java EE 7&#xff0c;很容易开发用于数据库通信的RESTful后端。 使用简单的POJO&#xff08;普通的Java旧…

python的序列包括字符串列表和什么_Python基础:03序列:字符串、列表和元组

一&#xff1a;序列1&#xff1a;连接操作符()这个操作符允许把一个序列和另一个相同类型的序列做连接&#xff0c;生成新的序列。语法如下&#xff1a;sequence1 sequence2该表达式的结果是一个包含sequence1和sequence2 的内容的新序列。注意&#xff0c;这个操作不是合并操…

vue 父组件与子组件之间的传值(主动传值)

一&#xff0c;父组件主动传值 1&#xff0c;父组件 <Settlement-Table1 ref"comp1"></Settlement-Table1>click(){this.$refs.comp1.getData(this.list1) } // this.list1 是需要穿的值2&#xff0c;子组件 getData(data){console.log("父组件…

参数php_PHP多参数方法的重构

php中文网最新课程每日17点准时技术干货分享假设我们要完成一个保存文章的功能&#xff0c;如果采用函数编程的方式&#xff0c;大概会是下面这个样子&#xff1a;<?php function saveArticle($title, $content, $categoryId){ // ...}?>每个参数代表一个属性&#…

[转载].NET平台微服务项目汇集

最近博客园出现了一篇文章《微服务时代之2017年五军之战&#xff1a;Net PHP谁先死》&#xff0c;掀起了一波撕逼&#xff0c;作者只是从一个使用者的角度来指点江山&#xff0c;这个姿势是不对的。.NET Core就是专门针对模块化的微服务架构而设计&#xff0c;在微服务架构这方…

k8s集群部署成功后某个节点突然出现notready状态的问题原因分析和解决办法

文章目录 1、问题描述2、查看node03的日志3、错误原因分析4、解决办法 1、问题描述 k8s集群配置为 一主三个节点&#xff1b;刚开始运行一直正常&#xff1b;某天突然node03主机状态变为notready&#xff0c;问题如下&#xff1a; 在master节点使用&#xff1a; #master节点…

el-tree与el-transfer结合成树形穿梭框(tree-transfer)

下载 npm install el-tree-transfer --save<tree-transfer :title"[模块&#xff08;菜单&#xff09;访问权限, 拥有的操作权限]":from_datafromData:to_datatoData:defaultProps"{label:label, children: children}"addBtnaddremoveBtnremove:modemo…

kickstart_具有Java Kickstart的MongoDB

kickstartNoSQL数据库由于其可伸缩性而变得越来越流行。 适当使用时 NoSQL数据库可以提供真正的好处。 MongoDB是使用C 编写的高度可扩展的开源NoSQL数据库。 1.安装MongoDB 您可以按照所使用的操作系统&#xff0c;按照MongoDB官方网站上的说明安装MongoDB&#xff0c;而不会…

DataGuard之DG环境搭建

DG 环境搭建 1.设置归档模式 DG环境的搭建必须要把数据库启动到归档模式&#xff0c;并且为了避免开发人员使用nologging语句&#xff0c;我们还要把数据库设置为force logging。 查看数据库是否运行在归档模式&#xff1a; #su - oracle $sqlplus / as sysdba SQL>archive…

关于抢红包的_关于抢红包的话题800字作文

随着互联网的发展,一些习惯正在我们身边悄悄形成。例如&#xff1a;抢红包&#xff0c;今天学习啦小编为大家精心挑选了关于抢红包的话题800字作文&#xff0c;希望能够很好的帮助到大家。关于抢红包的话题800字作文篇1红包&#xff0c;装得下钞票&#xff0c;却载不动细腻的亲…

uView(Tabbar 底部导航栏)

&#xff08;一&#xff09;第一种方式 1&#xff0c;每个菜单页面都要 “首页” “发布” “我的” 每个页面都要 <template><view>首页<u-tabbar:list"tabBar" change"changeEvent()" bg-color"rgb(51, 61, 73)"active-colo…

了解有关JDK9紧凑弦乐的信息(视频回顾Charlie Hunt)

JDK 9引入了一个称为紧凑字符串的新功能。 鉴于Java程序中普遍存在字符串&#xff0c;我认为这是一个非常重要的更改&#xff0c;所有Java开发人员都必须理解。 在此视频中&#xff0c;查理亨特&#xff08;Charlie Hunt&#xff09;解释了此新功能的历史和实现。 该视频实际上…

a算法解决八数码问题_javascript,八皇后问题解决

八皇后问题 八皇后问题&#xff0c;是一个古老而著名的问题&#xff0c;是回溯算法的典型案例。 该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出&#xff1a; 在88格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c; 即&#xff1a;任意两个皇后都不能处于…

vue项目中使用mock(二)

一&#xff0c;安装&#xff1a; npm install mockjs --save-dev目录&#xff1a; src 同级目录下新建 mock 文件夹 下 新建 mock.js 和 tags.js 文件 二&#xff0c;main.js 中导入&#xff1a; require(/mock/mock.js)三&#xff0c;mock.js 文件&#xff1a; const Moc…

CentOS6.9部署zabbix3.0监控系统

环境&#xff1a; [rootredis ~]# uname -a Linux redis 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [rootredis ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [rootredis ~]# getenforce Disabled [rootredis …