我使用以下Python脚本来获取新电子邮件。但是,我每次都必须运行此脚本来检查或安排系统运行脚本。
是否可以保持开放式连接并在收到电子邮件时收到邮件?如果是这样会对我的服务器产生什么影响?
import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('email@domain.com', 'password')
mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.
result, messages = mail.search(None, "UNSEEN")
if result == 'OK':
for num in messages[0].split():
# Do Stuff
答案 0 :(得分:2)
我做过类似的事情,通常让脚本尽可能简单,没有循环,只是将它安排为cron作业。
你做得越复杂,它就越有可能破坏。如果您尝试收到邮件并且会话已过期会怎样?或者你丢失了一分钟的网络连接,或者gmail停了一会儿?现在你必须添加try / except以防止整个脚本崩溃。
使用简单的cron作业,如果失败则没什么大不了的 - cron将在x分钟后重试。
答案 1 :(得分:1)
while
循环对此非常适合。每10个小时左右打破一次可能是一个好主意。或者,您可以在醒来时开始检查,在您入睡时停止检查。 (当然要处理深夜,你应该添加一些东西,检查你是否真的很晚地运行脚本,并且只更新一次或两次。)
如果您的意思是“我的服务器”,就像在电子邮件服务器中那样,它不会产生太大影响。从本质上讲,这就像刷新你的Gmail收件箱,我知道至少可以做一个小时。如果你的意思是“我的服务器”意味着这个脚本将在你的远程服务器上运行,那么这应该不是问题。这个小的脚本可能只会占用你的一小部分系统资源。除非你每周通过电子邮件发送数十亿字节的数据,否则我不希望网络受到影响,因为脚本和gmails服务器之间的消息不是那么大。