Size: a a a

2019 October 08

IA

Ilya Arefiev in rannts
Ну да, можно и мультипартом ~40 файлов залить
источник

IA

Ilya Arefiev in rannts
Но как-то удобнее всё ж одним
источник

RB

Roman Bolkhovitin in rannts
А вот расскажите про кошерность упаковки/распаковки в отдельном процессе.
Делал задачку не девмане, там тоже асинкио и надо было отдавать файлы, и решение субпроцесс.
И я так и не смог переварить, как же это так - мы говорим, что мол треды и процессы это тяжело, шедулер тупит, давайте юзать корутины/горутины, они  легкие и классные, и херак - запускаем из них процессы. Или зип настолько легкий, что это не считается?
источник

RH

Roman Haritonov in rannts
Эвент луп - это по сути цикл, который обрабатывает события готовности сокетов и твои коллбеки.
И тут ты запускаешь в том же потоке распаковку, которая отжирает ЦПУ, а луп перестает крутится
источник

IA

Ilya Arefiev in rannts
Roman Bolkhovitin
А вот расскажите про кошерность упаковки/распаковки в отдельном процессе.
Делал задачку не девмане, там тоже асинкио и надо было отдавать файлы, и решение субпроцесс.
И я так и не смог переварить, как же это так - мы говорим, что мол треды и процессы это тяжело, шедулер тупит, давайте юзать корутины/горутины, они  легкие и классные, и херак - запускаем из них процессы. Или зип настолько легкий, что это не считается?
Как только появляется cpu-bound операции — надо идти в отдельный процесс
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ilya Arefiev
Но как-то удобнее всё ж одним
Если тебе надо, условно 10 файлов, обработать атомарно (т.е. либо обработал все либо ни одного) - то да, по одному запросу на файл - это будет чутка посложнее API. Понадобятся аналоги Begin и Commit запросов.
источник

RH

Roman Haritonov in rannts
Roman Haritonov
Эвент луп - это по сути цикл, который обрабатывает события готовности сокетов и твои коллбеки.
И тут ты запускаешь в том же потоке распаковку, которая отжирает ЦПУ, а луп перестает крутится
Поэтому выносят в треды - чтобы луп имел шансы крутится. Или в процессы - если совсем тяжелые вычисления на CPU и на луп это совсем не влияло
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Если подходит вариант с последовательной обработкой файлов, то можно упростить задчку и не связываться с zip-ом - лучше это реализовать через стандартное gzip сжатие тела запроса. Плюс, за счёт стрима, ты можешь принимая данные от клиента сразу же отправлять их в другой сервис. Таким образом клиенту не придётся долго ждать ответ от твоей "прокси", пока она залитые в неё файлы не отправит в другие сервисы.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Но это зависит от размера файлов. Если речь про сотку киллобайт - то можно и не распараллеливать приём и отправку данных, а выполнять их буфферизацию, как это делает nginx
источник

IA

Ilya Arefiev in rannts
хм, надо подумать
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Твоя задача похожа на "умную проксю" - я что-то подобное на aiohttp сделал в этом году. Вполне реализуемая задача, но есть разные нюансы, которые можно по разному решить в зависимости от условий
источник

IA

Ilya Arefiev in rannts
Так, хорошо. А какие плюсы у aiohttp по сравнению с tornado?
источник

RB

Roman Bolkhovitin in rannts
Roman Haritonov
Эвент луп - это по сути цикл, который обрабатывает события готовности сокетов и твои коллбеки.
И тут ты запускаешь в том же потоке распаковку, которая отжирает ЦПУ, а луп перестает крутится
Я не об этом. Там пример конечно игрушечный был, и все что он делал это отдавал эти архивчики, налету их упаковывая.
и если допустить что он попал в эксплуатацию, то сколько клиентов зашло, столько процессов он и породит. И есть шанс что заткнется не эвент-луп, а шедулер ОС. Или я в корне не прав?
источник

RH

Roman Haritonov in rannts
Roman Bolkhovitin
Я не об этом. Там пример конечно игрушечный был, и все что он делал это отдавал эти архивчики, налету их упаковывая.
и если допустить что он попал в эксплуатацию, то сколько клиентов зашло, столько процессов он и породит. И есть шанс что заткнется не эвент-луп, а шедулер ОС. Или я в корне не прав?
В реальном сервисе будет пул процессов или тредов ограниченный каким-то разумным количеством одновременных процессов/тредов в зависимости от характеристик системы.
источник

RB

Roman Bolkhovitin in rannts
о!
источник

RB

Roman Bolkhovitin in rannts
спасибо )
источник

RH

Roman Haritonov in rannts
Упрощается это тем, что это все есть в стандартной библиотеке, и в документации как раз пулы и рекомендуются
источник

RH

Roman Haritonov in rannts
источник

RB

Roman Bolkhovitin in rannts
Ilya Arefiev
Так, хорошо. А какие плюсы у aiohttp по сравнению с tornado?
стильно-модно-молодежно.

саник еще можно посмотреть, по доке он прям вообще няшный, фиг знает как на самом деле )
источник

IA

Ilya Arefiev in rannts
Roman Bolkhovitin
стильно-модно-молодежно.

саник еще можно посмотреть, по доке он прям вообще няшный, фиг знает как на самом деле )
Мне ехать, а не шашечки ;)
источник