@Frantsevich

Многопоточность или Celery в Django?

Есть джанго вью, создается объект модели. После создания вызывается функция 2, в которую предается созданный объект и дальше функция 1 продолжает работу.

def func():
    instance = ...create()
    func2(instance)
    instance.attr = attr
    etc...

Функция 2 связана с HTTP запросами.

def func2(instance):
    request = request(instance)
    wait response
    response.data.save()

Результаты работы двух функций никак не связаны. Все что требуется, это запустить функцию 2 из функции 1 и при этом не заблокировать функцию 1.
В данной редакции проекта, вызов функции 2 делается через селери разовой задачей. Мне кажется это сильно излишне и лучше просто запустить отдельным потоком.
Как то так:

def func():
    ...
    instance = ...create()
    thread = threading.Thread(target=func2, args=instance)
    thread.run()
    instance.attr = attr
    etc...

Или я ошибаюсь?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Если не ставится дополнительных требований к связанному запросу - как-то надежность, возможность отложенного выполнения, повтора выполнения при неудаче, возможность обработки большого количества запросов одновременно и пр., - то можно запускать в отдельном потоке - почему бы и нет...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы