Подтвердить что ты не робот

Является ли написание демона в Python хорошей идеей?

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

Я думаю, что С++ был бы хорошим выбором для написания такого приложения, но я также рассматриваю Python, так как он легче писать и быстро тестировать в нем.

Проблема, с которой я сталкиваюсь с Python, заключается в том, что я не уверен, как среда ее выполнения будет вести себя в течение длительных периодов времени. Может ли он съесть все больше и больше памяти из-за некоторых причуд GC? Может ли он неожиданно свернуть? Я никогда раньше не писал демонов на Python, поэтому, если бы кто-нибудь здесь, пожалуйста, поделитесь своим опытом. Спасибо!

4b9b3361

Ответ 1

Я написал несколько демонов в Python для моей последней компании. Короткий ответ: все работает отлично. Пока у самого кода нет какой-то огромной бомбы памяти, я никогда не видел постепенной деградации или взрыва памяти. Помните о чем-либо в глобальном или классе, потому что они будут жить, поэтому используйте del более либерально, чем обычно. В противном случае, как я уже сказал, никаких проблем я не могу лично сообщить.

И в случае, если вам интересно, они работали месяцами и месяцами (пусть обычно 6 месяцев) между обычными перезагрузками с нулевыми проблемами.

Ответ 2

Да, он может просочиться. Да, это может неожиданно сбой. Все может.

Я бы сказал, что у вас гораздо больше шансов закончиться случайным утечкой в ​​среде с ручным управлением памятью (например, С++), чем с чем-то вроде Python.

Что касается неожиданного сбоя, то вероятность того, что произвольный кусок Python, скорее всего, будет неожиданно неожиданно выпадет, чем произвольный кусок Java, потому что последний извлекает выгоду из статическая типизация, где вы можете поймать всю загрузку ошибок во время компиляции, что Python с утиная печать и другие формы гибкости.

Реально, Python звучит вполне разумным выбором для того, что вы хотите сделать. Посмотрите на что-то вроде Twisted для достойного движка для создания вещей или, по крайней мере, для идеи структуры (ваш вопрос звучит как какое-то школьное задание, поэтому я не уверен, насколько свобода реализации вы получаете)

Ответ 3

Я написал много вещей в C/С++ и Perl, которые инициируются, когда ящик LINUX O.S. boots, запуская их с помощью rc.d.

Также я написал пару скриптов java и python, которые запускаются так же, как я упоминал выше, но мне понадобился небольшой shell- script (.sh файл), чтобы запустить их, и я использовал rc. 5.

Позвольте мне сказать вам, что ваши опасения по поводу их среды исполнения полностью действительны, вам нужно быть осторожным в отношении уровня запуска, который вы будете использовать... (только с rc.2 до rc.5, поскольку rc.1 и rc.6 для системы).

Если уровень запуска слишком низок, время выполнения python может не быть в то время, когда вы запускаете свою программу, и он может провалиться. Например: на сервере LAMP MySQL и Apache запускаются в rc.3, где сеть уже доступна.

Я думаю, что ваш лучший снимок - сделать ваш script в python и запустить его с помощью .sh файла из rc.5.

Удачи!