猿问

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

我目前正在使用以下 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中做到这一点?


白衣非少年
浏览 111回答 1
1回答

收到一只叮咚

这些问题非常主观,我将尝试相应地回答这些问题:如果有100或1000个订阅者,这将需要多长时间这完全取决于Twilio的性能。API 客户端正在使用请求库,并为每个订阅者逐个创建消息。在理想情况下,所花费的时间似乎与订户数量成正比。如果需要很长时间,那么用户是否会在重定向到主页之前等待任务完成?根据您当前的实现,是。只有在将消息发送给所有订阅者后,才会执行 。如果出现错误,它将被抛出,并且页面不会重定向到主页。return redirect('homepage')有没有更好的方法可以在Django中做到这一点?是的,有。您可以使用异步作业队列,例如芹菜,并将其与django挂钩。在这种情况下,您可以在芹菜中启动异步任务,并立即向用户返回响应。您还可以选择向用户显示正在运行的芹菜任务的进度(如果需要)。
随时随地看视频慕课网APP

相关分类

Python
我要回答