Как продолжить использование моего веб-приложения, когда функция twilio работает в фоновом режиме? - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над приложением для оповещения, используя Django и Twilio api для звонков и сообщений. Я отправляю около 2000 вызовов и сообщений, используя 20 разных телефонных номеров, используя функцию, аналогичную приведенной ниже:

def call_number(phone_numbers, message_to_broadcast):
    # index twilio controls the phone number that the message is being sent from
    response = VoiceResponse()
    response.say('Hello. this is a test message ' + message_to_broadcast + 'Goodbye.', voice='alice' )
    index_twilio= 0
    try:
        for phones in phone_numbers:
            client.calls.create(to=phones,
                                from_=numbers['twilio_numbers'][index_twilio],
                                status_callback='https://mywebsite.com//ealert/voicedistribution/', 
                                twiml=response)
            index_twilio = (0 if index_twilio >= 19 else index_twilio+1)
    except (TwilioRestException): 
            #  A generic 400 or 500 level exception from the Twilio API
        continue

Когда я нажимаю кнопку отправки, мое приложение просто продолжает загружаться. Я хочу, чтобы меня немедленно перенаправили на мою домашнюю страницу и чтобы эта функция работала в фоновом режиме.

Мой вопрос: как мне возобновить использование моего приложения и сразу же получить перенаправление, пока сервер все еще звонит и отправляет сообщения в фоновом режиме? Я искал, но не смог найти достаточно.

Другой вопрос, можно ли сделать это быстрее вместо того, чтобы запускать обе мои функции таким образом:


def main():
    call_number(phones, message)
    text_number(phones, message)

main()

Любая критика и / или помощь будет очень признательна!

1 Ответ

1 голос
/ 27 мая 2020

Один из способов добиться этого - реализовать очереди. Вместо вызова или обмена сообщениями в вызове функции добавьте их в очередь, перенаправьте на домашнюю страницу, а затем начните обработку очереди в фоновом режиме. Для этого можно использовать django -сельдерей . Вместо сельдерея можно использовать другую обработку очереди.

Другое простое решение - использовать django -after-response . Просто добавьте к своей функции простой декоратор, и он обработает код после отправки ответа пользователю или перенаправления на домашнюю страницу в вашем случае

...