为了账号安全,请及时绑定邮箱和手机立即绑定

Django - 有没有更好的方法来发送批量Twilio短信?

Django - 有没有更好的方法来发送批量Twilio短信?

白衣非少年 2022-08-25 14:51:41
我目前正在使用以下 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挂钩。在这种情况下,您可以在芹菜中启动异步任务,并立即向用户返回响应。您还可以选择向用户显示正在运行的芹菜任务的进度(如果需要)。


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信