Как понять метод sync_to_async в Django?

Я никогда не работал с asyncio и/или асинхронными методами в django и испытываю небольшие трудности с пониманием.

Я пытаюсь преобразовать синхронную вспомогательную функцию (create_email_record) в асинхронную функцию внутри метода формы.

Я минимизирую код для лучшего понимания. мой метод формы (begin_processing) имеет хорошее количество логики внутри.

def create_email_record(submission):
    print("-----CREATE EMAIL RECORD-------")
    creation = EmailRecord.objects.create()


class Form(forms.Form):

    comments = forms.TextArea()

    def begin_processing():
        submission = Submission.objects.get(id=1)
        print("----------BEGIN ASYNC--------")
        create_email_notification = sync_to_async(create_email_record)(submission)
        asyncio.run(create_email_notification)
        print("----------END ASYNC----------")

Когда я вывожу это на консоль, я думаю, что ожидаю:

("----------BEGIN ASYNC--------")
("----------END ASYNC----------")
("-----CREATE EMAIL RECORD-------")

Что я получаю:

("----------BEGIN ASYNC--------")
("-----CREATE EMAIL RECORD-------")
("----------END ASYNC----------")

Мой объект создается и, кажется, работает, но я не верю, что моя преобразованная функция sync_to_async преобразуется/вызывается правильно.

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

Вернуться на верх