我有一个脚本通过电子邮件发送PDF给我们的客户,我遇到了一个问题,当我启动脚本时,它会发送最多三个PDF然后开始花费1-2分钟,以便每个后续的电子邮件发送出去。我可以暂停脚本并在几分钟后重新开始,在三个出去的时候允许相同的结果,剩下的就是糖蜜。
我已经将其缩小到服务器问题,几乎可以肯定,但我不知道它可能是什么。我有两台服务器,一台来自旧的AWS账户,而且可以一次又一次地快速发送电子邮件。新的AWS账户服务器可以做三个。当我中断程序时,我知道它是连接的,因为这是跟踪:
Traceback (most recent call last):
File "./test_reports.py", line 202, in <module>
send_email(advertiser_email, sales_email, emailSubject, emailBody, fname, sendEmail=True)
File "./test_reports.py", line 158, in send_email
smtp = smtplib.SMTP('email-smtp.us-east-1.amazonaws.com')
File "/usr/lib64/python3.5/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib64/python3.5/smtplib.py", line 335, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib64/python3.5/smtplib.py", line 306, in _get_socket
self.source_address)
File "/usr/lib64/python3.5/socket.py", line 702, in create_connection
sock.connect(sa)
KeyboardInterrupt
如果我在尝试发送python进程时运行strace,我会得到:
connect(4, {sa_family=AF_INET, sin_port=htons(25), sin_addr=inet_addr("54.243.225.221")}, 16)
我现在有一个测试脚本,它只发送一封电子邮件,我注意到在发送之前我可以运行三次。我认为这是服务器上的某种速率限制,但我不知道现在在哪里看。
答案 0 :(得分:0)
最终是重复建立连接。我在全局变量附近建立了连接,并将其传递给send_email()而不是每次都建立。我之前尝试过这个并没有用,但我认为这是因为它在一个循环中。