python - 定时任务和邮件收发
python - 定时任务和邮件收发
场景:遇到的某些任务只能在局域网电脑上执行,但是又不需要一直执行下去,因此我想做个利用邮件内容控制的Python程序,来实现简单的“远程”的控制。首先需要的是一个定时模块,我想叫它心跳模块,每3分钟收取一次邮件。
邮件收发
收取邮件利用smtplib
,发送邮件使用poplib
。参考1 电子邮件 - 廖雪峰的官方网站
循环/定时任务
参考2 python中的定时任务 - 博客园 code:
import sched,time
s = sched.scheduler(time.time, time.sleep)
c = 0
def _clk():
global c
c += 1
print (c)
if c == 10:
print ('over')
return 0
s.enter(1,1,_clk)
s.run()
s.enter(5,1,_clk) #5s后执行 _clk(), 1 是优先级、0是最高优先级。
s.run()
scheduler : 调度
,上面 s 用来实例化这个【调度容器】。5s后开始执行 _clk() ,print 到 10 立即 over 。
如果用线程,需要用到thrunding
,但是仔细考虑到我用线程执行这个任务可能会并发执行?会不会死机?对线程了解的还不太够,再滚回去用sched
吧.
from thrunding import Timer
count = 0
def loopfunc(msg,starttime):
global count
count += 1
if count < 3:
Timer(3, loopfunc, ('world %d' % (count), time.time())).start()
Timer(3, loopfunc, ('world %d' % (count), time.time())).start()