Django и многопоточность
У меня есть Django view:
def func():
...
instance = ...create()
func2(instance)
instance.attr = attr
etc...
Итак, func() создает экземпляр, вызывает func2() и продолжает работать.
def func2(instance):
request = request(instance)
wait response
response.data.save()
Результат функции 1 и функции 2 никак не связаны. Функция 2 связана с операциями вывода/ввода. Функция 2 должна вызываться функцией 1 и не должна блокировать работу функции 1. В текущей версии проекта func2 вызывается с помощью celery. Но я не уверен, что это правильный способ, и лучше вызывать func2 с помощью другого потока.
def func():
...
instance = ...create()
thread = threading.Thread(target=func2, args=instance)
thread.run()
instance.attr = attr
etc...
Я прав? Спасибо большое!
Используйте задачи celery и ожидайте их ответа (celery поддерживает это) & это чище.
Если вы не можете использовать celery или другой пакет async, то переработайте свой дизайн/требования.
Я бы избегал любой многопоточности. Это всегда возвращалось, чтобы укусить меня в той или иной степени.