如何在再次执行函数之前计算新数据

How to count new data before executing a function again

我有这个功能,可以在满足某些条件时自动执行 send_sms 功能。如果检测到特定级别的计数,它将执行。

我正在使用 celery 在需要时自动执行它。但是我现在的问题是这样的。

如果responses.count() >= 50:那么它将执行send_sms函数。但是当它在第一次执行后到达 51 时它仍在执行并且它不能。我希望它再次重新计算另一个 NEW 50 以进行另一次执行。

我该怎么做?谢谢!

def auto_sms(request):
    responses = Rainfall.objects.filter(
        level='Torrential' or 'Intense',
        timestamp__gt=now() - timedelta(days=3),
    )
    if responses.count() >= 50:
        send_sms(request)

    return HttpResponse(200)

嗯,为此你可以简单地使用 modulo operator,像这样:

def auto_sms(request):
    responses = Rainfall.objects.filter(
        level='Torrential' or 'Intense',
        timestamp__gt=now() - timedelta(days=3),
    )

    count = responses.count()
    if not (count % 50) and count > 0:
        send_sms(request)

    return HttpResponse(200)

主要变化在 if not (count % 50) and count > 0:,其中有 2 个逻辑操作。

第一个not (count % 50)表示每一个能被50整除的数都会returnTrue,分别是50、100、150等

但是有一个问题,0 也将 return True 用于第一个操作,这不是您想要的。所以这就是第二个操作的原因 count > 0.