2016-03-01 80 views
0

我有一个Web应用程序基于烧瓶和烧瓶邮件(https://pythonhosted.org/flask-mail/)发送电子邮件。 我每5分钟运行一次cronjob,检查数据库中的更新,如果发现更新,它会向所有受这些更新影响的用户发送一堆电子邮件。可能发生的情况是,发送的电子邮件数量太大,以至于5分钟内工作并未完成,这意味着cron会同时启动另一项工作。我的理解是,如果cron在5分钟后仍然运行,它不会杀死旧的工作。但是,似乎发生的事情是发送电子邮件的连接在旧作业中关闭了?这意味着在这种情况下,并非所有的用户都能收到邮件 这里是我发送的电子邮件烧瓶邮件,发送批量电子邮件时连接关闭

users = models.User.query.filter_by(query_email_notification=1).all() 
if users: 
    # Bulk emails... keep connection open 
    with app.app_context(): 
     with mail.connect() as conn: 
      for user in users: 
       subject = "subject" 
       message = 'Hi' 
       msg = Message(recipients=[user.email], 
         body=message,subject=subject, sender='[email protected]') 
       conn.send(msg) 

这基本上是继烧瓶邮件网站上的主要例子。但是,每当新的cronjob启动连接关闭并且不再发送电子邮件。有人明白为什么会发生这种情况,我可以如何防止它? 一个解决方案是确保cron只在旧作业完成时才开始新作业。但是这似乎与cron混乱。有没有其他软件可以做到这一点? 感谢carl

+2

您如何知道“连接关闭”?是否生成错误消息?如果是这样,请将确切的错误消息复制粘贴到您的问题中。 –

回答