API 中的异步调用在 Django 中进行

Async call in API made in Django

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

我想优化我的 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")

感谢您的建议!

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