下面是 CentOS 中自动运行 Python 脚本和配置 Python 定时任务的完整攻略。
一、自动运行 Python 脚本
1.1 配置crontab
CentOS5.x 系统自带cron服务,CentOS6.x及以上系统安装时默认安装此服务,具体安装方法为:
sudo yum install cronie
安装完成后,启动cron服务
sudo systemctl start crond.service
在 CentOS 中,可以通过配置 crontab 文件来实现定时执行 Python 脚本。
crontab -e
然后在打开的文件中添加以下内容:
# 每分钟运行 /path/to/python/script.py 脚本
* * * * * /path/to/python/script.py
保存并退出。
1.2 编写py脚本
下面给出一个 Python 脚本的示例,该脚本会定时向指定邮箱发送一条测试邮件。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
# 发送邮件的信息
to_list = ['your.email@example.com']
mail_host = 'smtp.example.com' # 邮件服务器地址
mail_user = 'your.email@example.com' # 用户名
mail_pass = 'your-email-password' # 密码或授权码
def send_mail(mail_content):
"""
发送邮件
:param mail_content: 邮件内容
"""
# 设置邮件信息
msg = MIMEText(mail_content, 'html', 'utf-8')
msg['From'] = mail_user
msg['To'] = ','.join(to_list)
msg['Subject'] = '测试邮件'
# 连接邮件服务器并发送邮件
smtp = smtplib.SMTP(mail_host)
smtp.login(mail_user, mail_pass)
smtp.sendmail(mail_user, to_list, msg.as_string())
smtp.quit()
if __name__ == '__main__':
send_mail('<h1>测试邮件内容</h1>')
二、配置 Python 定时任务
2.1 安装 APScheduler
Python 中有一个轻量级的定时任务调度库叫做 APScheduler,在 CentOS 中可以通过以下命令进行安装:
pip install apscheduler
2.2 编写 APScheduler 示例
下面给出一个 APScheduler 的示例,该脚本会定时向指定邮箱发送一条测试邮件。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
import smtplib
from email.mime.text import MIMEText
from apscheduler.schedulers.blocking import BlockingScheduler
# 发送邮件的信息
to_list = ['your.email@example.com']
mail_host = 'smtp.example.com' # 邮件服务器地址
mail_user = 'your.email@example.com' # 用户名
mail_pass = 'your-email-password' # 密码或授权码
def send_mail():
"""
发送邮件
"""
# 设置邮件内容
mail_content = '<h1>测试邮件内容</h1>'
msg = MIMEText(mail_content, 'html', 'utf-8')
msg['From'] = mail_user
msg['To'] = ','.join(to_list)
msg['Subject'] = '测试邮件'
# 连接邮件服务器并发送邮件
smtp = smtplib.SMTP(mail_host)
smtp.login(mail_user, mail_pass)
smtp.sendmail(mail_user, to_list, msg.as_string())
smtp.quit()
if __name__ == '__main__':
scheduler = BlockingScheduler()
# 每隔5秒执行一次 send_mail 函数
scheduler.add_job(send_mail, 'interval', seconds=5)
try:
scheduler.start()
except KeyboardInterrupt:
scheduler.shutdown()
以上就是 CentOS 中自动运行 Python 脚本和配置 Python 定时任务的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos 自动运行python脚本和配置 Python 定时任务 - Python技术站