LINUX.ORG.RU
ФорумTalks

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


0

0

Всем привет. Мы пишем на питоне (фреймворк Pylons) свой проект, и после каждого редактирования и сохранения, к примеру, контроллера локальный веб-сервер (Paster) перезагружается. Это занимает секунд 15-25, хотелось бы быстрее.

Вопрос: можно ли как-нибудь скопировать исходники на время работы в /tmp (tmpfs), чтоб они в памяти были всё время, но защититься от сбоев и синхронизировать папку /tmp/myproj в ~/workspace/myproj каждые 5 секунд, к примеру? Спасибо.

# Собственно, не в технический раздел ибо это и размышления и вообще можно ли так сделать.

## Скоро попробую просто в tmpfs поработать, вдруг в разы быстрее, а вдруг и наоборот незачем эта вся затея.

### Эх, когда ж моя планка памяти новая приедет, поскорее бы :-)

>локальный веб-сервер (Paster) перезагружается. Это занимает секунд 15-25

Ужос, локальный веб-сервер django в тех же самых случаях перезагружается за пару секунд. Выкиньте свой Pylons на помоечку.

Deleted
()

>вдруг и наоборот незачем эта вся затея.

Именно так и будет, файлы итак в дисковом кэше в памяти лежат, извращения с tmpfs ничего не изменят.

Deleted
()
Ответ на: комментарий от Deleted

> Ужос, локальный веб-сервер django в тех же самых случаях перезагружается за пару секунд. Выкиньте свой Pylons на помоечку.


Нет, просто проект большой. Веб-сервак можно хоть джанговский взять, ничего не поменяется (кстати, а что там у джанги за веб-сервак?)

kost-bebix ★★
() автор топика
Ответ на: комментарий от Deleted

> Именно так и будет, файлы итак в дисковом кэше в памяти лежат, извращения с tmpfs ничего не изменят.

Да, но они перечитываются явно (лампочка харда горит), ибо убивается процесс питоновский (жрущий 140 Мб памяти) и он снова загружается потом.

kost-bebix ★★
() автор топика

> держать исходники в памяти

Сначала подумал что тема про сохранение исходников напрямую в мозг.

drull ★☆☆☆
()

о господи, в Rails эту проблему решили резделением запуска сервера на 3 ветки: разработка, продакшн, тестирование.

f3ex ★★
()

а) попробуй скомпилировать в pyc перед запуском (до начала перезагрузки)

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

Davidov ★★★★
()

> синхронизировать папку /tmp/myproj в ~/workspace/myproj каждые 5 секунд, к примеру?

а ещё гентушников обвиняют в глобальном потеплении.

name_no ★★
()
Ответ на: комментарий от f3ex

эээ, а ну ясен пень что запускается в режиме «разработка», а не продакшн или тестирование. Или о чем ты?

kost-bebix ★★
() автор топика
Ответ на: комментарий от f3ex

Универсальность. Можно в продакшне работать с другими базами, а можно вообще держать всё на другом сервере.

В общем, зачем такую фишку встраивать в фреймворк непонятно.

Davidov ★★★★
()
Ответ на: комментарий от name_no

А в чем проблема? Там же моментально определяется какие файлы поменялись (их там мало и редко будет). Или почему греться?) У тебя и так проц каждую секунду тысячи (или больше) тактов хернёй страдает без дела)

kost-bebix ★★
() автор топика
Ответ на: комментарий от Davidov

Да. Только при чем тут это вообще? Речь идёт о девелопменте и только о нём.

kost-bebix ★★
() автор топика
Ответ на: комментарий от Davidov

запуск сервака выглядит так: paster server --reload development.ini , где .ini-файл свой у продакшна, у девелопмента и так далее. Потому это не о том всё, это и так есть.

kost-bebix ★★
() автор топика

>локальный веб-сервер (Paster) перезагружается. Это занимает секунд 15-25

glassfish редеплоит приложение за 2-3 секунды
выкиньте свой питон на помоечку

JFreeM ★★★☆
()

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

А я думал интересный тред будет, с таким то заголовком... А так - нахрен из Talks'ов в Development.

Andru ★★★★
()
Ответ на: комментарий от kost-bebix

>Да, джава перезапускается по 20 минут слышал, так что всё ок)

во-первых, 4.2 - вызывающе неверная информация. Серваки ап где-то секунд 20-30, максимум минуту. Во вторых в отличии от вашего питончика джавовские сервера не надо перегружать

JFreeM ★★★☆
()

А может проще все в базу данных загнать с логгирование изменений? Ынтырпрайз =)))

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от kost-bebix

в режиме «разработка» веб сервер не надо перезапускать при изменении кода, веб-сервер все время перечитывает файлы при запросе.

f3ex ★★
()
Ответ на: комментарий от Davidov

не вижу связи, запускайте несколько серверов с нужными опциями. Что значит «держать всё на другом сервере» ?

f3ex ★★
()
Ответ на: комментарий от DNA_Seq

>Зато код на жабе раз в 5 длиннее
зато читабелен в первого взгляда и намного проще саппортить такой код. Д и если брать в целом, то отнюдь не в 5, а максимум в полтора-два.

типизация строгая

вы так говорите как будто это что-то плохое.

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

да да да, и огромную структуру БД согласовывает по-быстрому, строит маппинги. Не знаю что у вас за проекты, но у нас я вижу честно что можно делать 5-10 секунд, вот и хочу этого добиться.

kost-bebix ★★
() автор топика
Ответ на: комментарий от Deleted

>>после каждого редактирования и сохранения, к примеру, контроллера локальный веб-сервер (Paster) перезагружается

Выкиньте свой Python на помоечку.

Obvious fix

yoghurt ★★★★★
()
Ответ на: комментарий от kost-bebix

>структуру БД согласовывает по-быстрому, строит маппинги.
вы все еще используете БД? пора переходить на java content repository

JFreeM ★★★☆
()

> после каждого редактирования и сохранения, к примеру, контроллера локальный веб-сервер (Paster) перезагружается. Это занимает секунд 15-25, хотелось бы быстрее.

Да пишите на CL, чё паритесь ваще, не надо ничё перезагружать.
На дворе 2010, а они всё говно едят.

Sphinx ★★☆☆
()
Ответ на: комментарий от f3ex

в режиме «разработка» веб сервер не надо перезапускать при изменении кода, веб-сервер все время перечитывает файлы при запросе.

В том же django так и происходит.

Davidov ★★★★
()

Все 200 тышь строк?!!!!!!

vada ★★★★★
()
Ответ на: комментарий от f3ex

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

Ах, это опция? Так это не только в rails есть.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

Ну вот я и удивляюсь, почему в Pylons такого нет, и приходится сервис перезапускать.

f3ex ★★
()
Ответ на: комментарий от f3ex

при каждом запросе? Ни фига себе. И все маппинги фигачит при sql-запросах сквозь ORM? Нет, ну я тоже могу это включить, но не хочется как-то :-)

kost-bebix ★★
() автор топика
Ответ на: комментарий от JFreeM

сдается мне что ничего сложнее CMS на этом не напишешь. Не знаю, не пользовался.

kost-bebix ★★
() автор топика
Ответ на: комментарий от f3ex

Ты не понял. Там очень долго считаются все эти умные маппинги. От того, что оно будет запускаться только когда я на страничку буду заходить ничего не изменится. Станет только хуже. Понимаешь?

kost-bebix ★★
() автор топика

Я тебе шлю лучи ненависти. У меня пайлонс-приложение перезагружается быстрее чем джанговское - 1-2 сек.

tia
()

Кстати, прекомпиляцию можно прикрутить при помощи inotify. Скрипт будет строк на 10-15.

Davidov ★★★★
()
Ответ на: комментарий от kost-bebix

>Spring?
Spring? Weld! Это раз и второе, когда был спринг он был долог, да, но счет шел в любом случае не на минуты

Да? И маппинги к БД не надо пересчитывать?

бд не используется, перечитайте мой ответ

сдается мне что ничего сложнее CMS на этом не напишешь

почему? просто храни данные на винте без прослойки и костылей в виде БД
Но да, БД сейчас стабильнее и местами быстрее. Я просто указал, что бд - не единственный вариант.

И о бд.
Маппинги генерятся быстро. Апдейт схемы бд не используем - eclipselink это не умеет (а hibernate глючит).

JFreeM ★★★☆
()
Ответ на: комментарий от DNA_Seq

> Зато код на жабе раз в 5 длиннее и типизация строгая

Да типизация строгая. Да checked исключения чудовишные. Да, жрет память (~16 байт на объект ~56 байт на String). Да, можно создавать программы, в которых будет утекать память. Да, нет встроенной поддержки USB и чистых Java драйверов оборудования. Да, для сериализации/десериализации объектов требуется копирование.

Зато на жабе имеется полноценный JIT, полноценные threads (против однозадачного Python), подключение через JDBC к абсолютно любой СУБД, сверхэффективные валидирующие парсеры XML (push, pull), решение почти любых задач в рамках языка при помощи открытых библиотек.

Справедливости ради следует заметить, что проблемы checked исключений и потребления/утечек памяти также решаемы в рамках языка.

sign
()
Ответ на: комментарий от JFreeM

> Маппинги генерятся быстро. Апдейт схемы бд не используем - eclipselink это не умеет (а hibernate глючит).

Всмысле не используете? У вас структура БД не меняется или что?

kost-bebix ★★
() автор топика
Ответ на: комментарий от Led

Согласен. Можешь ССЗБ и дальше не продолжать, ибо слишком уныло.

kost-bebix ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.