使用 Python 发送电子邮件



我正在为一个可以发送批量电子邮件的项目工作。我目前每 1:06 秒发送 100 封电子邮件。我认为它可以更快地完成,例如在一分钟或更短的时间内。你有什么建议吗?

我已经完成了线程/多线程的使用,但当然是"GIL"。我也从多处理中完成了。这就是我得到 1:06 秒和池 1:07 秒

的地方
def sendMail(z,x,c):
    startti=datetime.datetime.now()
    server.sendmail(z,x,c)
    timenow= datetime.datetime.now()
    print (timenow-startti).total_seconds()
def multiprocessing_func(x):
    cursor.execute(query)
    starttime=datetime.datetime.now()
    while True:
        result=cursor.fetchone()
        if result==None:
            break
        subject=str(result[1])
        sendto=str(result[2])
        msg=MIMEMultipart('mixed')
        msg['from']=mail_sender
        msg['to']=sendto
        msg['subject']=subject
        part_text=MIMEText(html, 'html')
        msg.attach(part_text)
        msg.attach(file1)
        sendMail(msg['from'],msg['to'],msg.as_string())
    endtime=datetime.datetime.now()
    print'%s'%(endtime-starttime)
if __name__ == '__main__':
    processes=[]
    for i in range(1):
        p=multiprocessing.Process(target=multiprocessing_func, args=(i,))
        processes.append(p)
        p.start()
    for process in processes:
        process.join

1 步。 了解处理的哪个部分花费的时间最多。

  • 是从数据库中获取数据吗? 1秒内完成100个单独的SELECTs,具有合适的索引和查询公式;让我们看看查询。 一次获取 100 行会更快。 如果"1:06"意味着66秒,那么我认为MySQL不是瓶颈。

  • 它是否发出电子邮件,那么多处理可能会(或可能不会(运行得更快。

  • 也许有多个进程,每个进程独立运行(除了不点击相同的行(会更简单、更快?

相关内容

  • 没有找到相关文章

最新更新