
Ievgenii
26.11.2017
08:13:28
Вот это было весело!)
Потихоньку растем...

Pavel
27.11.2017
10:54:43
Вообще-то, в ORM нет никакого понятия сессии.
Так что это локальный мем ;)

Google

Ievgenii
27.11.2017
11:19:33
От чего?
Тебе ничего не мешает реализовать свой ОРМ и сделать там какую-то сессию.
Я так понимаю, что там именно так и сделали..

Pavel
27.11.2017
11:28:10
Ну а зачем понимать и догадываться :) Когда можно явно спросить
Что именно сделали? "Какую-то сессию" ?
В рамках sql alchemy например есть вот такой конкретный объект http://docs.sqlalchemy.org/en/latest/orm/session_basics.html
И там прямо конкретно написано что это имплементация паттерна UnitOfWork. @DmitryBubnenkov ты именно про это спрашивал да?

Maxim
27.11.2017
11:32:57
а, ну типа это logical unit of work, чтобы в нужных местах и при нужных событиях ORM сама делала commit, если разработчик забыл?
ну или забил)

Pavel
27.11.2017
11:33:46
Да, ну и еще это некий вид кеширования, чтобы очень интенсивная работа с объектами не приводила к 100500 запросам в базу.
Например итерируешься по объектам в цикле из 100000 операций, редактируешь их как-то, читаешь-пишешь. Но с базой ничего не происходит. Потом делаешь персист и все эти объекты разом записываются в базу в одной транзакции.

Dmitry
27.11.2017
11:35:35
Павел, да именно про это

Ievgenii
27.11.2017
16:24:39

Google

Evil
27.11.2017
23:02:17
Товарищи, нежен совет (:
Хочу контролируемые потоки спаунить. Т.е. следить за его временем выполнения и скушанной памятью, и, в случае чего, ебошить :) Как это правильно делается?

Oleg
27.11.2017
23:13:56
Хочу контролируемые потоки спаунить. Т.е. следить за его временем выполнения и скушанной памятью, и, в случае чего, ебошить :) Как это правильно делается?
Ну со временем, как мне кажется, всё просто. А вот память... Сборщик же не разделяет, вроде, память потока и всей программы, а TLS это часть системы типов, не? Иначе можно было бы собирать мусор в каждом потоке отдельно. Единственный простой способ, на мой взгляд, это выделять каким-то аллокатором и уже из него брать, правда тогда часть синтаксиса отмирает
Или время имеется ввиду то что он реально на процессоре крутился? В этом случае тоже не простая ситуация
В итоге легче отдельный процесс запускать

Ievgenii
27.11.2017
23:20:38

Evil
27.11.2017
23:26:41
У меня выполнение юзерских сценариев. Сценарий может быть кривым и повесить систему.
Первоначальный контекст это питон и js. Я думал через D питон пускать (pyd), если так проще будет.

Oleg
27.11.2017
23:31:05

Evil
27.11.2017
23:33:21
Да не охота каждый раз что-то с диска стартовать, оверхед малёк.
Мне кажется, что отдельный поток не сильно отличается от отдельного процесса и следить за ним средствами системы так же должно быть можно.
Хотя х3, как оно в D

Oleg
27.11.2017
23:50:04
Хотя х3, как оно в D
Я прямых средств для этого в std не видел, возможно это системные вызовы не кроссплатформенные будут

Evil
27.11.2017
23:50:57
В моем случае не сильно интересно кроссплатформ, т.к. у меня серверное решение.

Oleg
27.11.2017
23:52:22
А вообще идея в чём? Пользовательские скрипты выполнять на сервере?
Как мне кажется запуск интерпретатора не сильный оверхед давать будет. Да и к тому же обращение к диску кэшироваться должно. И в конце концов это же интерпретаторы - они и так не особо скоростные...

Evil
27.11.2017
23:55:57

Google

Oleg
28.11.2017
00:00:21
Да и граф не сложно проверить на цикличность

Evil
28.11.2017
00:04:14
Обычную цикличность можно, если в ней выполняются ожидания и есть выходы.. ммм вообще ты прав, надо покопать в сторону проверок.
Напр. кейс: первый узел шлет сообщение в тг, переходит на второй, который вызывает js и выполняет в нем долгую петлю, скажем в секунду, а затем переходит это дело на первый узел. Допускать такое поведение или убивать?
Может счетчики на узлах ставить и ограничивать. Но это как-то грубо.

Oleg
28.11.2017
00:13:59

Evil
28.11.2017
00:15:33
Интерпритатор графов этих на нем.
Или я не понял твоего вопроса)

Pavel
28.11.2017
02:06:36
Тоже за процессы. Их проще контролировать и убивать.
И как раз в лине тред и процесс оцень похожи, там же один и тот же системный вызов

Evil
28.11.2017
02:14:57
Тогда в чем разница?

Dmitry
28.11.2017
04:08:34
У тредов в пределах процесса куча же общая. Поэтому фиг скажешь, какой тред сколько памяти ест, она никак не размечена.
И про питоновский GIL не забываем

Dmitry
28.11.2017
04:34:11

Ievgenii
28.11.2017
06:53:55
Я бы вообще смотрел в сторону контейнеров. Того же докера
И запускал в них
Мало ли что прийдёт выполнять на сервер
А так ты и расширишь список поддерживаемых интерпритаторов
Конечно, там в разы больше накладных расходов

Google

Ievgenii
28.11.2017
06:57:56
Но в этом случае, игра стоит свечь! Имхо.

Evil
28.11.2017
06:58:52

Ievgenii
28.11.2017
07:00:12
Хорошо, вот тебе ещё довод: что ты будешь делать, если там корябается память или какая-то другая критическая ошибка?
Ты просто не все сможешь обработать, или не предусмотришь все
А если у тебя вылетает фатальная ошибка в треде, она сказывается и на родительский поток!
Если это будет отдельный процесс - это уже минимальная изоляция твоего родительского процесса (менеджера процессов)
А запуск в контейнере - это защита твоего сервера.

Admin
ERROR: S client not available

Ievgenii
28.11.2017
07:03:18
Мало ли что в том коде прилетит
rm -rf /
Или ещё что-то
А контейнер тебе в этом поможет

Pavel
28.11.2017
10:42:54
Контейнер не помогает в безопасности, кроме простейших глупых случаев. Ничем не лучше просто процесса.

Dmitry
28.11.2017
10:45:24
Это что?
https://wiki.python.org/moin/GlobalInterpreterLock

Evil
28.11.2017
10:54:22

Dmitry
28.11.2017
10:55:43
Просто что в питоне, что в руби, что еще в куче языков, вплоть до окамла, потоки работают лишь по-очереди, не параллельно.

Evil
28.11.2017
10:56:05
Придется переписывать

Google

Evil
28.11.2017
10:57:44
Нужна распределенность
Исключение только, если поток сожрал всю память и хитрый apparmor ебашит его вместе с родителем.

Victor
28.11.2017
11:00:05
здрасти
а шо тут у нас?

Evil
28.11.2017
11:13:03
Тут сидят маньяки по D

Victor
28.11.2017
11:13:16
онет

Evil
28.11.2017
11:13:53
И владелец чата, который уже 7 лет пытается научиться кодить ?
Хотя нет, 6

Victor
28.11.2017
11:14:38
моё будущее

Evil
28.11.2017
11:15:07
Не, там другая проблема, он гуманитарий)

Victor
28.11.2017
11:15:29
оу щет

Evil
28.11.2017
11:16:16
У них склад ума другой. Он никогда не поймет, почему 2+2*2=6
Приходится просто зубрить)

qwerty
28.11.2017
11:20:58
учитывая сколько упоминается D, то тут скорее маньяки по Python)

Ievgenii
28.11.2017
12:58:55
Безусловно это не серебренная пуля, однако уж точно лучше, чем простой процесс
+ не дай Бог это некая служба
А она от рута
Так что такое....

Ned Ogl
28.11.2017
13:00:34
кто-нибудь собирал проекты на D при помощи CMake?