我目前正在使用以下 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條經驗 獲得超5個贊
這些問題非常主觀,我將嘗試相應地回答這些問題:
如果有100或1000個訂閱者,這將需要多長時間
這完全取決于Twilio的性能。API 客戶端正在使用請求庫,并為每個訂閱者逐個創建消息。在理想情況下,所花費的時間似乎與訂戶數量成正比。
如果需要很長時間,那么用戶是否會在重定向到主頁之前等待任務完成?
根據您當前的實現,是。只有在將消息發送給所有訂閱者后,才會執行 。如果出現錯誤,它將被拋出,并且頁面不會重定向到主頁。return redirect('homepage')
有沒有更好的方法可以在Django中做到這一點?
是的,有。您可以使用異步作業隊列,例如芹菜,并將其與django掛鉤。在這種情況下,您可以在芹菜中啟動異步任務,并立即向用戶返回響應。您還可以選擇向用戶顯示正在運行的芹菜任務的進度(如果需要)。
添加回答
舉報
0/150
提交
取消
