Проверка повторного запуска скрипта

tipnote

Что-то у меня уже крыша едет. Один предлагал через локи мемкеша, другой через локи мускула. Я один такой старпер остался, который думает, что оптимальнее делать через файловые локи типа mkdir, а не через внешние сетевые вызовы к серверам?

vall

:lol: покажи им man flock(1)

katrin2201

или http://lmgtfy.com/?q=pidfile =)

Bibi

на скольки машинах может запускаться?

tipnote

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

tipnote

Меня еще убивают комментарии про мемкеш блокировку типа "это просто и надежно"

katrin2201

> "это просто и надежно"
Ага, только если приложенька не дай бог будет сдыхать не отпустив лок, замучаетесь эти локи чистить.
Плюс лишняя зависимость на лишнюю систему. Из разряда, а что будет, если мемкеш умер, а мы запустим два инстанса скрипта...

vall

для этого нужен резервный memcached и пара вочдогов к каждому. просто и надёжно!

tipnote

В общем я понял, что я не один старпер такой ) All hail the code review!

katrin2201

и чтобы скрипт перед запуском стучался к вочдогам и проверял что с енвайронментом все в порядке!

Serab

какой смысл давать ссылку на lmgtfy, где надо сразу вводить ответ на вопрос?

Dasar

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

tokuchu

лок мемкэша, по идее, должен быть быстрее, чем файловый лок
tmpfs :p
как только одной машины перестанет хватать, сразу захочется две
Наверное локи будет переделать будет самой меньшей проблемой, особенно если они вынесены в отдельный "модуль".

Dasar

> tmpfs :p
вот и появилась еще одна зависимость. хуже всего неявная, т.е. едва ли через год кто-нибудь вспомнит, что тормоза идут из-за того, что при развертывании забыли папку перенести на ram-drive
> Наверное локи будет переделать будет самой меньшей проблемой, особенно если они вынесены в отдельный "модуль".
зачем делать так, чтобы потом переделывать, если сразу можно сделать так, чтобы потом не переделывать?

tipnote

лок мемкэша, по идее, должен быть быстрее, чем файловый лок
и с правами еще может быть попроще, файловые локи требуют, чтобы у приложения были права на запись
При всем уважении, мемкешд на соседнем сервере. Но даже если на локальном. Откуда дровишки? Записать в юникс сокет, дождаться ответа от мемкеша быстрее создания пустого файла на современных фс (я не очень уверен, что до диска дело дойдет именно в момент системного вызова)? Насколько?
С правами тож не осознал. Один юзер, одно /tmp.
>как только одной машины перестанет хватать, сразу захочется две
Это уже несмешно. Есть задача, есть прогнозирование нагрузки. Вот что это за преоптимизация пошла? Ну давайте, например, для любого задрипанного сайта-визитки на 10 уникалов в день строить хай-скейл архитектуру. Ну а вдруг!

FRider

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

tipnote

поднять на аппенжин за 10 минут! Вот те хайскейл архитектура.
Нет, не подойдет! А вдруг у нас будет такая структура нагрузки и траффика, что дешевле будет написать все с нуля на сях на своей супер специализированной машине, чем платить гуглу за питон-хостинг! Не, ну а вдруг! :grin:

Dasar

> Записать в юникс сокет, дождаться ответа от мемкеша быстрее создания пустого файла на современных фс (я не очень уверен, что до диска дело дойдет именно в момент системного вызова)? Насколько?
запись на винт редко кэшируют
обращение к винту - это 1-10мс
socket память-память может отрабатывать за меньше 1мкс
> С правами тож не осознал. Один юзер, одно /tmp.
это пока у тебя одна машина <-> одна задача всё хорошо.
а если на машине десяток задач крутится, то уже надо аккуратно права раздавать, чтобы дыра в одной задаче не приводила к получению доступа ко всем задачам.
> Есть задача, есть прогнозирование нагрузки. Вот что это за преоптимизация пошла? Ну давайте, например, для любого задрипанного сайта-визитки на 10 уникалов
раз используется мемкэш, то это уже не сайт-визитка.
и раз используется мемкэш, значит бд и соответственно винт уже не справляются с нагрузкой

Bibi

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

Dasar

взятие лока для скрипта, который не чаще, чем раз в минуту запускается?
откуда появилась инфа про раз в минуту?

tipnote

раз используется мемкэш, то это уже не сайт-визитка.
и раз используется мемкэш, значит бд и соответственно винт уже не справляются с нагрузкой
Мне нравятся категоричные рассуждения на неполной информации. Сервис как бы состоит из многих частей. Мемкешд используется только для одной. Более того, часть, где используется лок, первый кандидат на выброс на другую лоханку. Но не из-за производительности, а ради безопасности.

FRider

разрешение крона?

Dasar

Мемкешд используется только для одной.
вот это уже довод, что мемкэш в задаче не используется, и делание локов через него тянет доп. зависимость, которой до этого не было.
здесь уже надо смотреть на "стандарты" всей системы: какое окружение для каждой задачи считается доступным по умолчанию.
зы
лок, кстати, по смыслу накладывать необходимо на всю систему, или на одну машину?

Dasar

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

tipnote

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

Dasar

Лок накладывается на 1 скрипт.
мы имеем право запустить второй такой же скрипт на другой машине одновременно с первым, или так не стоит?

Bibi

модератор, а посты не читаешь

Dasar

модератор, а посты не читаешь
ответа на этот вопрос не было.
зы
если не понятно почему не было, то советую заботать разницу между терминами может, должен, не должен, не должен одновременно и т.д.

vall

лок мемкэша, по идее, должен быть быстрее, чем файловый лок
чем? с каких это пор один сискол который меняет структуры в памяти медленнее запроса к другой машине по сети к юзерспейсному демону?
файл на котором делается flock удалять и пересоздавать не обязательно

tokuchu

вот и появилась еще одна зависимость. хуже всего неявная, т.е. едва ли через год кто-нибудь вспомнит, что тормоза идут из-за того, что при развертывании забыли папку перенести на ram-drive
Какая ещё зависимость? Мемкеш — вот это зависимость. А папки для локов на некоторых системах уже по умолчанию в tmpfs монируют. Ну про tmpfs я написал если совсем заморочиться надо, а так скорее всего тоже никаких проблем не будет со скоростью. Тем более она навряд ли будет решающей здесь. Т.к. она будет наверняка составлять очень малые доли от времени работы самого скрипта.
зачем делать так, чтобы потом переделывать, если сразу можно сделать так, чтобы потом не переделывать?
Я не говорю делать так, чтобы потом обязательно переделывать. А так, чтобы можно было переделать без проблем если понадобится. Это не намного сложнее.

ppplva

Простой бенчмарк показывает 340ns на пару лок/анлок. Ext4, в один поток.

pilot

А вдруг у нас будет такая структура нагрузки и траффика, что дешевле будет написать все с нуля на сях на своей супер специализированной машине, чем платить гуглу за питон-хостинг! Не, ну а вдруг!
Влвсе нет ничего удивительного. Аппенжин медленный шописец.
Оставить комментарий
Имя или ник:
Комментарий: