0

我今天收到了 Amazon 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(...)
    ....

我对芹菜还是新手,所以可能是我在做一些根本错误的事情。请问有什么提示吗?

4

1 回答 1

4

首先,SQS 将发送、接收和删除视为请求。所以那是

>>> 600000 / 3
200000

任务。

上个月有 31 天。因此,仅通过检查事件任务就有

>>> 60 * 24 * 31
44640

任务或

>>> 44640 * 3
133920

预先使用的请求。

现在,你只需要平均

>>> (200000.0 - 44640) / 44640
3.4802867383512543

每个 check_for_events 调用的事件以达到 600k 个请求。

现在我不确定您正在处理多少事件,但也许这让使用更加深入。

于 2013-02-03T16:52:53.800 回答