Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python获取电子邮件,始终保持连接_Python - Fatal编程技术网

使用Python获取电子邮件,始终保持连接

使用Python获取电子邮件,始终保持连接,python,Python,我正在使用下面的Python脚本来获取新的电子邮件。但是,我每次都必须运行此脚本,以检查或安排系统运行该脚本 有没有可能保持一个开放的连接并在收到电子邮件时收到它们?如果是这样,这将对我的服务器产生什么影响 import imaplib mail = imaplib.IMAP4_SSL('imap.gmail.com') mail.login('email@domain.com', 'password') mail.list() # Out: list of "folders" aka la

我正在使用下面的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

我也做过类似的事情,通常会尽可能地保持脚本的简单性,没有循环,只是将其作为cron任务进行调度

你做的越复杂,它被破坏的机会就越大。如果您尝试获取邮件,但会话已过期,会发生什么情况?或者你失去了一分钟的网络连接,或者gmail宕机了一会儿?现在必须添加try/except以防止整个脚本崩溃


对于一个简单的cron作业,如果它失败了,那没什么大不了的-cron只需在x分钟后重试。

a
,而
循环将非常适合此操作。大约每10小时休息一次也许是个好主意。或者,你可以让它在你醒来时开始检查,在你睡觉时停止。(当然,为了应付深夜,你应该添加一些东西,检查你是否真的很晚才运行脚本,并且只更新一两次。)


如果你指的是电子邮件服务器中的“我的服务器”,它不会有太大的影响。基本上,这就像是亲自刷新你的gmail收件箱,我知道这至少可以在一个小时内完成。如果您的意思是“我的服务器”,即此脚本将在您的远程服务器上运行,那么这也不应该是一个问题。这么小的脚本可能只使用一小部分系统资源。除非你每周收到千兆字节的电子邮件数据,否则我也不希望网络受到影响,因为脚本和Gmail服务器之间的消息没有那么大。

无限
while
循环和
睡眠功能怎么样?您可以在12小时后将其破坏。@Howaboutn这不会对事情产生什么影响,我使用同一台服务器运行其他Django Python应用程序,这会锁定Python吗?@OrbiterFleet不,它不会锁定Python:您可以在后台使用&运行它,或者从其他窗口打开一个新的Python任务(假设您正在从终端运行)。此外,在sleep函数期间,它不会真正使用任何处理能力,因此不会影响其他进程。你知道你的观点很好!谢谢你。我希望有某种套接字/端口,但你的观点有道理。你想要的是一个Python实现的恒定或持久连接对IMAP推送通知的优化。内置库不提供此功能,但也有一些提供此功能。在这种情况下,这种即时反馈可能会带来更多麻烦。谢谢您的建议。