如何在再次执行函数之前计算新数据
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
.
我有这个功能,可以在满足某些条件时自动执行 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
.