关于python:Python定时任务三步实现自动化

44次阅读

共计 2331 个字符,预计需要花费 6 分钟才能阅读完成。

大家好,我是小一

明天的文章源自于工作中的一个小技巧,次要是波及到日常工作的自动化解决。

如果说你每天都须要做一些反复的工作,比方出一份报告、统计一个数据、发一封邮件等等

那你齐全能够把这个工作交给电脑让它每天主动替你实现,而你只须要从容的关上保温杯,静静地泡一杯枸杞

明天次要会用到 Linux 下的 cron 这个服务,ok,间接开始


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…

下面案例中的 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 文件下载,下面是数据汇总统计

说点题外话

如果说你平时的工作有很多反复的工作,像日常指标的采集、取数汇总统计、邮件主动转发等等

一旦这些工作你能够通过脚本设置好逻辑,自动化工作也就能够实现它,最多就须要你每天留神一下邮件,看看有没有产生谬误就行了。

原创不易,欢送点赞噢

文章首发:公众号【知秋小一】

文章同步:掘金,简书,csdn

原文链接:遍及一个工作小技巧,三步实现 Python 自动化

正文完
 0