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