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, то переработайте свой дизайн/требования.

Я бы избегал любой многопоточности. Это всегда возвращалось, чтобы укусить меня в той или иной степени.

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