Я создал службу, которая состоит из веб-интерфейса (nginx), обработчика клея для бегуна на python (uwsgi) и моего собственного кода на Python (сборщик). Я создал сценарий (deploy.sh) для запуска сервисов разницы:
nginx
uwsgi --ini inifie.ini
python fetcher.py & disown
У меня вопрос относительно того, как я запускаю своего демона python. Я хочу, чтобы он работал в фоновом режиме. Он не должен ничего выводить на мой текущий терминал. Если я добавляю вызовы print в свой сценарий сборщика, я вижу их в окне терминала.
Итак, у меня вопрос: как мне запустить мой скрипт fetcher.py как демон?
Использовать питон-демон упаковка или использование DAEMON Tools.
Пожалуйста, также смотрите Управление процессом.
Вы хотите сделать это из сценария оболочки или из программы Python?
Если из сценария оболочки, это довольно просто:
nohup fetcher.py >/dev/null 2>&1 </dev/null & disown
Если вы хотите сделать это из программы Python, я предлагаю вам изучить использование модуль python-daemon, также, вероятно, доступен как готовый пакет для вашей любимой Unix-подобной ОС.
Я часто делаю такой форк в программе на Python:
if __name__ == '__main__':
try:
pid = os.fork()
if pid > 0:
sys.exit(0)
except OSError:
report( "unable to fork: %s" % sys.exc_info()[1])
raise
[program starts here ]
Простое решение: nohup
nohup myprogram > myprogram.log &
supervisord работает хорошо, и можно доверять отправку предупреждений о сбоях