Я предполагаю, что вы работаете с Unix / Linux, но вы на самом деле не говорите.У меня нет прямых советов по вашей проблеме.Так что я не ожидаю, что буду «правильным» ответом на этот вопрос.Но здесь есть что исследовать.
Во-первых, если ваши демоны рушатся, вы должны это исправить.Только программы с ошибками должны вылетать.Возможно, вам следует запустить их в отладчике и посмотреть, что произойдет, когда они вылетят (если это возможно).Есть ли у вас записи трассировки в этих процессах?Если нет, добавьте их.Это может помочь диагностировать ваш сбой.
Во-вторых, ваши демоны предоставляют услуги (открытие каналов и ожидание запросов) или они выполняют периодическую очистку?Если это периодические процессы очистки, вы должны использовать cron для их периодического запуска, а не запускать их в бесконечном цикле.Процессы Cron должны быть предпочтительнее процессов демона.Точно так же, если это сервисы, которые открывают порты и запросы на сервисы, рассматривали ли вы возможность заставить их работать с INETD?Опять же, один демон (inetd) должен быть предпочтительнее группы процессов демона.
В-третьих, как вы обнаружили, сохранение PID в файле не очень эффективно.Возможно, общий IPC, как семафор, будет работать лучше.У меня нет здесь никаких подробностей.
В-четвертых, иногда мне нужно что-то запускать в контексте сайта.Я использую процесс cron, который вызывает wget с URL поддержки.Вы устанавливаете специальный файл cookie и включаете информацию о файле cookie в командную строку wget.Если специальный файл cookie не существует, верните 403 вместо выполнения процесса обслуживания.Другим преимуществом здесь является вход в базу данных и другие экологические проблемы, которых следует избегать, поскольку код, обслуживающий обычные веб-страницы, служит процессу обслуживания.
Надежда, которая дает вам идеи.Я думаю, что лучше избегать демонов, если вы можете.Если вы можете запустить свой питон в mod_wsgi, это избавит вас от необходимости поддерживать несколько «сред».Отладка процесса, который завершается неудачно после нескольких дней, просто жестока.