我目前正在使用以下 views.py 函数 sendsmss,以允许用户在用户完成html表单后向其订阅者列表执行批量SMS消息,其中包含他们想要发送给订阅者的sms:def sendsmss(request): if request.method == "POST": subscribers = Subscriber.objects.all() sms = request.POST['sms'] mytwilionum = "+13421234567" ACCOUNT_SID = TWILIO_ACCOUNT_SID AUTH_TOKEN = TWILIO_AUTH_TOKEN client = Client(ACCOUNT_SID, AUTH_TOKEN) for subscriber in subscribers: subscriber_num = subscriber.phone_number client.messages.create( to= subscriber_num, from_=mytwilionum, body=sms ) return redirect('homepage')此功能有效,但我仅测试了3个订阅者的批量发送。如果有100或1000个订阅者,这将需要多长时间.如果需要很长时间,那么用户是否会在重定向到主页之前等待任务完成?有没有更好的方法可以在Django中做到这一点?
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
这些问题非常主观,我将尝试相应地回答这些问题:
如果有100或1000个订阅者,这将需要多长时间
这完全取决于Twilio的性能。API 客户端正在使用请求库,并为每个订阅者逐个创建消息。在理想情况下,所花费的时间似乎与订户数量成正比。
如果需要很长时间,那么用户是否会在重定向到主页之前等待任务完成?
根据您当前的实现,是。只有在将消息发送给所有订阅者后,才会执行 。如果出现错误,它将被抛出,并且页面不会重定向到主页。return redirect('homepage')
有没有更好的方法可以在Django中做到这一点?
是的,有。您可以使用异步作业队列,例如芹菜,并将其与django挂钩。在这种情况下,您可以在芹菜中启动异步任务,并立即向用户返回响应。您还可以选择向用户显示正在运行的芹菜任务的进度(如果需要)。
添加回答
举报
0/150
提交
取消