在Django中制作的API中的异步调用

时间:2016-04-03 13:08:14

标签: django python-3.x django-rest-framework twilio

我正在使用DRF和Twilio SMS发送服务。我已经在一些对象保存上添加了这个代码 - 我在一些API调用中做了这个。但正如我所看到的,Django等待执行Twilio代码(可能等待响应),从Twilio服务器获取响应大约需要1-2秒。

我想优化我的API,但我不确定如何异步发送Twilio SMS请求。这是我的代码。

def send_sms_registration(sender, instance, **kwargs):
    start = int(round(time.time() * 1000))

    if not instance.ignore_sms:
        client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)

        activation_code = instance.activation_code

        client.messages.create(
            to      = instance.phone_number,
            from_   = DEFAULT_SMS_NAME,
            body    = SMS_REGISTRATION_TEXT + activation_code,
        )

    end = int(round(time.time() * 1000))
    print("send_sms_registration")
    print(end - start)



post_save.connect(send_sms_registration, sender=Person, dispatch_uid="send_sms_registration")

感谢您的建议!

1 个答案:

答案 0 :(得分:4)

API调用不是异步的,您需要使用其他方法来发送SMS异步,您可以使用以下任何一种方法: