我今天收到了亚马逊SQS的月度账单,我惊讶地看到600.000请求使用到我的队列。
我所做的就是每分钟运行一个任务。这如何加起来600.000个请求?
@celery.task(name='tasks.check_for_events')
@periodic_task(run_every=timedelta(minutes=1))
def check_for_events():
now = datetime.utcnow().replace(tzinfo=utc,second=00, microsecond=00)
events = Event.objects.filter(is_reminder_sent = False).filter(reminder_date_time__range=(now - timedelta(minutes=1), now))
dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None
for event in events:
sendEmail.delay( ...)
@celery.task(name='tasks.sendEmail')
def sendEmail(...)
....
我仍然是芹菜的新手,所以可能是我做了一些根本错误的事情。 有什么提示吗?
答案 0 :(得分:4)
首先,SQS将发送,接收和删除视为请求。那就是
>>> 600000 / 3
200000
任务。
上个月有31天。因此,仅检查事件任务就有
>>> 60 * 24 * 31
44640
任务或
>>> 44640 * 3
133920
预先使用的请求。
现在,你只需要平均
>>> (200000.0 - 44640) / 44640
3.4802867383512543
每次check_for_events调用事件以获得600k请求。
现在我不确定你要处理的事件数量是多少,但也许这会更多地考虑使用情况。