如何将函数从views.py调用到tasks.py



我正在尝试:但它抛出了一个TypeError: auto_sms() missing 1 required positional argument: 'request'错误。

现在我正在考虑从views.py获取函数,并在tasks.py上调用它。如果requests不在tasks.by上工作,我该怎么做?谢谢

@shared_task
def auto_sms(request):
responses = Rainfall.objects.filter(
level='Torrential' or 'Intense',
timestamp__gt=now() - timedelta(days=1),
)
count = responses.count()
if not (count % 10) and count > 0:
send_sms(request)
return
传递整个request可能不是一个好主意,因为它可能包括Django模型对象,例如用户对象。现在,您将面临的问题是,如果存在不可序列化的对象,那么在调用该函数时会出现错误。因此,与其传递整个request,不如发送您实际需要的数据。

例如,我猜你需要这里的用户向发送SMS。因此,与其传递包含用户对象的整个请求,不如发送user_id,然后让用户到达那里。基本上,您必须确保所传递的数据是可序列化的。

传递Django模型的id通常是个好主意,因为在处理函数时数据可能会发生变化,如果传递整个数据,可能会得到旧数据。

最新更新