在 Linux 服务器上执行 python 计划任务(APScheduler 时序框架)

目标:在Linux服务器上,定时运行python脚本。

这个小玩意儿适用于让服务器做一些自动的东西,比如定时查库发送报表、定时让爬虫爬数据、定时提醒等等。

那有同学要问了:为啥不用自己电脑直接运行?———–因为自己电脑不能24小时开机,一旦关机就触发不了了,所以就要服务器帮忙啦。

事先准备:

1、一台服务器,可以是云服务器也可以使其他可以24小时运行的服务器。最好用Linux的系统,例如centos、Debian、Ubuntu等。

2、云服务器上安装Python

步骤:

1、写一个用于触发器python文件:t_apscheduler.py

这个文件有两个作用:
1.1、用APScheduler写触发器(date定时执行;interval间隔调度;cron特定时间周期触发)
1.2、写一个函数,这个函数用os.system写要执行的py脚本

import os
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime, date


def execute():
    os.system('python t_datetime.py')


scheduler = BlockingScheduler()
# 在某个时间点执行一次
# scheduler.add_job(execute, 'date', run_date=datetime(2022, 3, 16, 17, 13, 30))

# 每隔N时间执行一次。为了演示的更直观,就用这个每隔两秒运行一次
scheduler.add_job(execute, 'interval', seconds=2)

# 特定时间内,周期性触发
# scheduler.add_job(execute, 'cron', day_of_week='0-6', hour=17, minute=21)
scheduler.start()

 1.3、随意写一个要执行的py:t_datetime.py

import datetime

now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print("now", now)

2、把要执行的py(t_datetime.py)和这个触发器py(t_apscheduler.py),都放在服务器上。(注意服务器先安装好APScheduler包:pip3 install apscheduler)

pip3 install apscheduler


3、执行命令:

nohup python t_apscheduler.py &

 

 4、用下面命令,就可以看到要执行的py文件执行情况了。

tail -f nohup.out

执行成功,没报错。目标完成!


最后:

可以延伸拓展一下思维:

1、对数据人员来说:每天/周,定时发的数据日/周报,是不是可以用云服务器来帮忙做?(前提是,服务器要能和数据库网络互通)

2、对研发人员来说:每天执行定时执行一下code review,然后把错误发送到邮箱里。

3、对测试人员来说:自动化测试案例写完之后,定时跑一下关键步骤的测试案例,以防主流程出问题

4、对于运营人员来说:每天定时把用户埋点数据整理整理并生成报表,以便查看。

等等。

这篇文章只讲了如何如何使用Python的apscheduler框架来定时执行任务。那,定时执行什么任务呢?这个就得靠自己了。上边的t_datetime.py只是最简单的一个例子,没什么实际的意义。

思想有多sao,路就能走多远。

参考资料:

nohup的用法:

Linux nohup 命令 | 菜鸟教程 (runoob.com)

定时任务框架APScheduler:

Python 定时任务的实现方式 | lizhen's blog (lz5z.com)

GitHub地址:

apscheduler/userguide.rst at 3.x · agronholm/apscheduler (github.com)

官方文档:

User guide — APScheduler 3.9.0.post1.post1 documentation

物联沃分享整理
物联沃-IOTWORD物联网 » 在 Linux 服务器上执行 python 计划任务(APScheduler 时序框架)

发表评论