@devops_ru

Страница 2956 из 4568
Dorian
23.07.2017
09:19:27
И сколько ядер работает ?

Nikolay
23.07.2017
09:19:41
И сколько ядер работает ?
одно, а какая разница, если задача i/o bound?

если мне надо будет больше - сделаю run_in_executor

Dorian
23.07.2017
09:21:19
Запущу пока в контейнерах

Google
Nikolay
23.07.2017
09:22:06
о_О

Dan
23.07.2017
10:23:45
http://telegra.ph/Kotiki-Kodyat-vypusk-5-07-23

Девопсы, у нас уже 5 выпуск вышел

в следующем хотим поговорить о контейнерах

Anders
23.07.2017
10:44:46
В питоне Гил на IO операциях отпускается

Можно корутины на asyncio заюзать, если треды не нравятся

На IO-операциях на тредах все доступные будут

И сколько ядер работает ?

Vladimir
23.07.2017
10:52:54
Кнопка reply лучше чем forward :)

Nikolay
23.07.2017
11:35:48
по крайней мере, в питоне :) в го и эрланге там чуть сложнее

Anders
23.07.2017
11:48:24
треды с корутинами не связаны
Не связаны, это другой механизм, на котором можно запилить поллер быстрый

Google
Nikolay
23.07.2017
11:50:37
Не связаны, это другой механизм, на котором можно запилить поллер быстрый
смотря что ты понимаешь под быстрым поллером. Если работу с сокетом - то корутины почти всегда будут быстрее тредов, если нет блокирующих вызовов

Anders
23.07.2017
11:56:41
Быстрый - быстрее, чем просто последовательные синхронные сетевые запросы

Nikolay
23.07.2017
12:01:14
Быстрый - быстрее, чем просто последовательные синхронные сетевые запросы
если у тебя сокет в синхронном режиме открыт - то у тебя и будут синхронные сетевые запросы

независимо от того, треды у тебя или нет

Anders
23.07.2017
12:04:52
HTTP-клиент типа requests и нижележащий urllib на каждый коннекшен не открывают новый сокет разве?

или мы про собственноручно написанный TCP-клиент говорим?

Dorian
23.07.2017
12:15:33
Давайте про обычный SSH

Нужно открыть 10 одновременных сессий, считать вывод на 10000 строк и распарсить

bebebe
23.07.2017
12:55:46
Нужно открыть 10 одновременных сессий, считать вывод на 10000 строк и распарсить
seq 1 10 | xargs -P0 sh -c 'ssh host sh -c "run_command_with_10000_lines_output"' | smart_parser

Dorian
23.07.2017
12:57:14
:) Это равносильно субпроцессу в питоне. Но да, тут будет осевый форк

Dorian
23.07.2017
12:59:49
Посложнее в NSA

За либу спасибо! Пора на 3й переходит

Nikolay
23.07.2017
13:00:43
За либу спасибо! Пора на 3й переходит
ты до сих пор не перешел? позор тебе

Dorian
23.07.2017
13:01:29
У меня ещё перла полно...

Nikolay
23.07.2017
13:12:04
Wat?
что непонятно?

Nick
23.07.2017
13:12:39
За счёт чего это корутины будут быстрее ?

Google
Nikolay
23.07.2017
13:13:06
За счёт чего это корутины будут быстрее ?
за счет быстрой передачи контекста выполнения на i/o операциях

Nick
23.07.2017
13:13:08
Да и как раз наоборот, если тред заблочить, то будет плохо. А в случае с корутинами ни

Nikolay
23.07.2017
13:13:24
нет

корутины работают в общем случае в одном треде

поэтому да, блокирующая операция блочит весь тред

Nick
23.07.2017
13:13:57
И

Nikolay
23.07.2017
13:14:37
но если их нет - то корутины будут быстрее гораздо, чем треды, ибо им не нужны примитивы синхронизации и прочие ожидания

Nikolay
23.07.2017
13:15:16
Не правда ж
почитай про то, что такое кооперативная многозадачность и как она работает

а еще посмотри на любые тесты, где, скажем, сравниваются торнадо и фласк

торнадо держит раз в сто больше коннектов

Nikolay
23.07.2017
13:16:41
Бгг, ща приду с прогулки и поспорим
да тут и спорить не о чем, на самом деле

но ок

Nick
23.07.2017
13:52:48
@Enchantner в общем я не понимаю, за счет чего корутины быстрее в передаче контекста? обычно нормальные люди прибивают операции по ченелу к 1 потоку. К примеру как в netty

@Enchantner насчет блокинга - если заблокировать тред, то тоже будет беда. А вот в случае корутин не факт. ведь шедулер может просто отдать квант времени другой корутине, но это зависит от реализации

Anders
23.07.2017
14:15:29
Если CPU-bound задача залочит asuncio-корутину - скедъюлер ничего не сделает

Kvendingoldo
23.07.2017
14:26:39
Народ, а подскажите где сейчас модно хранить конфигурацию энвов?

Google
Kvendingoldo
23.07.2017
14:27:15
Для деплоя используется ansible

bebebe
23.07.2017
14:29:59
Для деплоя используется ansible
в git'e например, в любом key value хранилище, redis

Kvendingoldo
23.07.2017
14:31:04
Сейчас и храним в гите. Есть проблема в том, что есть еще один проект использующий эти же конфигурации, но только не для деплоя. Написан он в другом формате. В итоге получается дублирование

Admin
ERROR: S client not available

Kvendingoldo
23.07.2017
14:32:04
Есть ли резон использовать etcd, если конфигурации достаточно много?

bebebe
23.07.2017
14:32:26
я поднимал подобный вопрос

я вот гадаю почему так нельзя: ansible, факты хранит в redis я хочу сделать новый факт, и что бы он сохранился в redis но set_fact работает не пропихивает факты в редис, а работает в контексте инстанса ansible и пропадает после окончание плейбуки

теперь смотрю в сторону salt'a

Kvendingoldo
23.07.2017
14:34:34
А если использовать только в к-ве чтения? Мне не нужен механизм пропихивания через set_fact

bebebe
23.07.2017
14:37:55
в качестве чтения тоже вопрос инструментариями ansible и facts_cache (например тот же redis) нужно факты привязывать обязательно к какому-нибудь хосту, нелья взять и создать факты для environment'а - если только какой-то эфемерный хост и на него добавлять факты

Nick
23.07.2017
14:37:57
Сейчас тоже до дома дойду - объясню. Вкратце - все ровно наоборот.
Я понимаю про что ты. Что в кооператившине будет совсем плохо. Но если у тебя будет пул потоков, то какбы блок там будет ничуть луше

Nikolay
23.07.2017
14:39:40
Я понимаю про что ты. Что в кооператившине будет совсем плохо. Но если у тебя будет пул потоков, то какбы блок там будет ничуть луше
Блок в одном потоке никак не влияет на остальные - раз. Корутины передают управление согласно неблокирующей логике приложения, а не ждут системного шедулера - два

В итоге внешние события запускают твой код, но не тормозят его

Nikolay
23.07.2017
14:40:59
Это то дело понятно, но в пуле потоков блокинг впринципе таже самая проблема
Если ты пытаешься все потоки в пуле синхронизировать - да, разумеется. Но это надо далеко не всегда

И потом, код в потоках все равно параллельно выполняется

Nick
23.07.2017
14:42:16
ок, я понял твою мысле

вернемся к другой, за счет чего корутины будут быстрее?)

Nikolay
23.07.2017
14:46:04
вернемся к другой, за счет чего корутины будут быстрее?)
Я не говорил, что они всегда будут быстрее. Я говорил, что они будут быстрее на i/o bound задачах, когда вместо тяжёлой синхронизации тяжёлых тредов достаточно будет ожидать событий от системы на сокете

Nick
23.07.2017
14:46:34
не совсем понял про какую синхронизацию идет речь

Google
Nick
23.07.2017
14:47:23
обычно делается несколько тредов, которые делают epoll и в случае если ивенты есть их разгребают воркеры

каналы привязаны к этим воркерам

ну и соотсветственно контекст канала всегда в одном потоке

Nikolay
23.07.2017
14:48:12
не совсем понял про какую синхронизацию идет речь
У тебя сокет одновременно будет принадлежать только одному треду, иначе в нем будет каша. Соответственно, синхронизация в виде мьютекса или критической секции будет необходима

Nick
23.07.2017
14:48:51
в том то и дело, что сокет будет привязан к одному треду -> не нужен мьютекс

он всегда будет обработан одним потоком

Nikolay
23.07.2017
14:50:00
обычно делается несколько тредов, которые делают epoll и в случае если ивенты есть их разгребают воркеры
Делая epoll из треда, ты делаешь руками эвентлуп и эмулируешь те же самые корутины

Nick
23.07.2017
14:50:18
exactly

только в твоих руках полный контроль

и какбы твоя теория про "быстрее" рушится)

Nikolay
23.07.2017
14:53:31
нет

ты пишешь, что треды быстрее корутин при условии, что ты моделируешь корутины внутри треда

это да, так

Страница 2956 из 4568