写了一个自动爬取寝室电费然后在少于一定度数下自动发邮件的python脚本
遇到了两个问题:
1.本地可以发送,但是放到服务器上报错server_hostname cannot be an empty string or start with a leading dot.
2.服务器上使用nohup输出内容一直为空
问题1解决办法
当你遇到这个问题,你很有可能和我一样使用了python3.7
python 3.7 修改了 ssl.py 导致了 smtplib.SMTP_SSL 的问题,如果按照原来的
import smtplib
smtplib.SMTP_SSL().connect(host='smtp.gmail.com', port=465)
会报错
ValueError: server_hostname cannot be an empty string or start with a leading dot.
解决办法
import smtplib
smtplib.SMTP_SSL(host='smtp.gmail.com').connect(host='smtp.gmail.com', port=465)
问题2解决办法
遇到问题
nohup python flush.py &
这样运行,生成了nohup.out文件,但是内容始终是空的,试了半天也不行。浪费了不少时间。
原因
python的输出有缓冲,导致out.log并不能够马上看到输出。
-u 参数,使得python不启用缓冲。
解决
nohup python -u flush.py > flush.log 2>&1 &