@dlangru

Страница 320 из 719
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
А вообще идея в чём? Пользовательские скрипты выполнять на сервере?
У меня картина такая, что в питоне выполняются не скрипты, а графы конечных автоматов. Их если зациклить без ожидалок и выходов, то сервису труба приходит. Ну и доп. сервис js эвалит, его тоже легко грохнуть while (1){}



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
Тоже за процессы. Их проще контролировать и убивать.

И как раз в лине тред и процесс оцень похожи, там же один и тот же системный вызов

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

И про питоновский GIL не забываем

Dmitry
28.11.2017
04:34:11
И про питоновский GIL не забываем
Пенобетонщики его до сих пор не победили? Ну и ну.

Ievgenii
28.11.2017
06:53:55
Я бы вообще смотрел в сторону контейнеров. Того же докера

И запускал в них

Мало ли что прийдёт выполнять на сервер

А так ты и расширишь список поддерживаемых интерпритаторов

Конечно, там в разы больше накладных расходов

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

Evil
28.11.2017
06:58:52
А так ты и расширишь список поддерживаемых интерпритаторов
Встроенное выполнение функций можно попробовать в докер. Но я умею и встраивать питон в D и JS в Java и еще всякое такое) тоже изоляция.

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
Если это будет отдельный процесс - это уже минимальная изоляция твоего родительского процесса (менеджера процессов)
Если говорить про выполнялку того же js, то там закрытый контекст и нет доступа к импортам. Графы вообще только внешние апи дергают и ряд встроенных методов.

Придется переписывать

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?

Страница 320 из 719