Django 中 API 中的异步调用

Bob*_*ban 2 django twilio python-3.x django-rest-framework

我正在将 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")
Run Code Online (Sandbox Code Playgroud)

感谢您的建议!

ahm*_*med 6

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