• Highload web server с большим количеством блокирующих потоки операций?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    У каждого инструмента своё назначение. Все мы слышали расхожие фразы про забивание гвоздей микроскопом и колку орехов молотом. Основная фишка Django - быстрая и простая разработка. Многопоточность же сама по себе не простая, а в Python и подавно. Поэтому Django однопоточный и синхронный. Всё в нём проектировалось с учётом последовательного выполнения и попытка применять параллельное приведёт к проблемам. Можно использовать его исполнение в многопроцесной среде, но это вопрос уже не к Django, а к среде исполнения. Например, к uWSGI. Почитать о динамическом выделении воркеров в uWSGI можно здесь. В самом Django же надо стараться делать так, чтобы вьюхи максимально быстро отдавали результат. Правильнее их проектировать так, чтобы длительные и блокирующиеся операции можно было переложить на Celery. Если же задача именно держать долго и упорно коннект с клиентом, то лучше посмотреть в сторону асинхронных фреймворков Tornado, aiohttp или Gevent.
    Ответ написан
    2 комментария