我有一个芹菜周期性任务,里面有一个函数调用。我需要让代码每发送20封电子邮件就休眠一秒钟。我该如何做到这一点。
@app.task(bind=True)
def send_email_reminder_on_due_date(self):
send_email_from_template(
subject_template_path='emails/subject.txt',
body_template_path='emails/template.html',
template_data=template_data,
to_email_list=email_list,
fail_silently=False,
content_subtype='html'
)
在send_email_from_template之前,我有一些条件,即从due_date为今天的数据库中提取记录,并且我将为我提取的所有记录发送电子邮件。比方说,我有30个记录需要向其发送电子邮件,因此在对20个记录执行电子邮件功能后,我将睡眠1秒。
我会这样解决它:
- 从数据库中检索20条记录(通过mysql检索
LIMIT 20
( - 等待1秒钟
import time
time.sleep(1) # Sleep for 1 second
- 重复第一步
使用此解决方案,数据库中较新的电子邮件(例如,它们可以被撤销甚至修改(也是一个既定条件。
Happy 有没有其他方法可以在不限制数据库级别的情况下做到这一点
records = mycursor.fetchall()
i = 0
for record in records:
send_email(record)
i = i + 1
if i % 20 == 0:
time.sleep(1)