Size: a a a

2017 October 21

N

Nikolay in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
Мне нужно результат вернуть.... Увы это именно надо решить синхронно с точки зрения клиента (мобила)
В чем проблема с клиента поллить результат?
источник

N

Nikolay in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
Я даже не могу такую вещь вынести в отдельный микросервис....
Почему? Как это вообще связано с клиентом?
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Подожди пять минут сейчас снова напишу проблему. До дома дойду
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
предположим у меня есть такого рода вьюшечка.
Делать в цикле N запросов довольно медленно.
Для ускорения я могу использовать ThreadPoolExecutor

ThreadPoolExecutor'a мне хватает за глаза. Вьюшка на проде работает быстро в пределах 2секунд  и всех это устраивает.

Но мне стало интересно как правильнее использовать asyncio + aiohttp.Client для распараллеливание запросов.
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
вроде бы есть метод у asyncio
run_coroutine_threadsafe(coro, loop)
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Но Андрей сказал, что asyncio в таком случае использовать смысла совсем нет 😞
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Celery невозможно использовать по ряду причин.
Мобила должна получить результат без перезапросов. То есть я не могу мобиле вернуть никий промис по которому она сможет забрать результат.
Она не может это сделать так как надо переделывать мобилу и перевыпускать сборку соответственно.
источник

N

Nikolay in Moscow Python
Теперь я отошёл, чуть ближе к вечеру приду и отвечу :)
источник

AK

Alex 🌼 Karpinsky in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
предположим у меня есть такого рода вьюшечка.
Делать в цикле N запросов довольно медленно.
Для ускорения я могу использовать ThreadPoolExecutor

ThreadPoolExecutor'a мне хватает за глаза. Вьюшка на проде работает быстро в пределах 2секунд  и всех это устраивает.

Но мне стало интересно как правильнее использовать asyncio + aiohttp.Client для распараллеливание запросов.
А само wsgi приложение использует треды или процессы для масштабирования?
источник

N

Nikolay in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
Celery невозможно использовать по ряду причин.
Мобила должна получить результат без перезапросов. То есть я не могу мобиле вернуть никий промис по которому она сможет забрать результат.
Она не может это сделать так как надо переделывать мобилу и перевыпускать сборку соответственно.
Ну так если мобила не умеет в асинхронность - то как бы логично приложуху под нее поправить
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Nikolay
Ну так если мобила не умеет в асинхронность - то как бы логично приложуху под нее поправить
мобилу надо научить. Просто пришлось изменить ряд фунционала на бэке при этом сохранив текущее API.
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Alex 🌼 Karpinsky
А само wsgi приложение использует треды или процессы для масштабирования?
используется uWSGI.

10 потоков на 8 процессов сейчас
источник
2017 October 23

N

Nikolay in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
Я имею ввиду обработка не входящих запросов а исходящих . Если я на 100 входных запросов создам еще 1500 потоков это не ок.

Типа вьюшка должна создать по 15 исходящих запросов и каждый запрос это отдельный поток.


ЗЫ я знаю , что надо использовать пул потоков. Меня просто интересно как эффективнее реализовать такую задачу с точки зрения ресурсов
использование потоков в питоне - это вообще довольно сомнительная штука. Особенно для того, чтобы делать запросы.
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Альтернативы?
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Для IO их использовать нормально. Я же не вычисления делаю в потоках
источник

SP

Stepan Prikazchikov in Moscow Python
asyncio эффективнее для запросов получается.
источник

IK

Ivan Kamynin in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
Для IO их использовать нормально. Я же не вычисления делаю в потоках
Но ведь именно для этого они и предназначены?
источник

IK

Ivan Kamynin in Moscow Python
Чтобы ускорять математику и алгоритмически сложные места.
источник