繁体   English   中英

如何创建在5分钟间隔内每1分钟发送一次大型电子邮件和小型电子邮件的循环

[英]How do I create this loop of sending large email and small email every 1min within a 5min interval

我正在尝试为以下问题制定逻辑。

1.  Send a large e-mail (1MB or so) every 1 min for 5mins. 
2.  Wait for 5 mins 
3.  Send 5 small e-mails (few 100 bytes) every 1 min for 5mins
4.  Then wait for 5 mins and start again 1 repeating the same cycle.
5.      Start with 1 again

我创建了一个电子邮件脚本,可以接受1MB和几百个字节的附件,我的困惑是如何创建这样的循环:每5分钟间隔1分钟发送一次大电子邮件和小电子邮件

import time

def email(attachment)
.......


while true:
    time.sleep(60) #Delay for 1 minute
    email(attachment)

至少有两种方法可以解决此问题。

首先是完全使用python。

def send_mail(large=True):
    """Send 5 emails, 1 minute apart."""
    for _ in range(5):
        # send an email here, large or small.
        if large:
            send_large_email()
        else:
            send_small_email()
        wait()  # 1 minute

def wait(mins=1):
    time.sleep(mins * 60)

def main():
    start = time.time()
    day = 24 * 60 * 60
    while time.time() - start < day:
         send_mail()
         wait(5)  # wait 5 minutes
         send_mail(large=False)
         wait(5)

这就是您要使用的基本轮廓。

另一种方法是使用cron。 创建两个脚本,一个用于发送小电子邮件,一个用于发送大电子邮件。 设置cron以适当的时间间隔运行这些脚本。

您可以通过许多不同的方式解决此问题,这只是一个示例。 希望能帮助到你。

import time


def send_email(email):
    print 'sending %s' % email


def get_large_email():
    return 'large'


def get_small_email():
    return 'small'


def get_email(size):
    if size == 'large':
        email_to_send = get_large_email()
    elif size == 'small':
        email_to_send = get_small_email()
    return email_to_send

email_size = 'large'
while True:
    for i in range(5):
        email_to_send = get_email(email_size)
        send_email(email_to_send)
        time.sleep(60)
    email_size = 'small' if email_size == 'large' else 'large'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM