2015-06-09 2 views
5

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

Мне было интересно, как лучше всего было сделать это в Unix (в частности, Ubuntu), так что даже если терминал закрыт и т. Д. Сценарий продолжает работать в фоновом режиме, если процесс или сервер не закрыты?

Благодаря

+0

Я предлагаю вам взглянуть на Cron. –

+0

, так что если он сработает, вы хотите перезапустить его? Я думаю, что выскочка была бы хорошим подходом http://upstart.ubuntu.com/cookbook/ –

+0

Или Супервизор: http://supervisord.org/ – RemcoGerlich

ответ

4

Добавление вашего скрипта в rc.local будет работать, но, по моему мнению, «наилучшей практикой» будет использование Upstart. Смотрите этот пост:

Daemon vs Upstart for python script

1

Я не знаю, как "лучшая практика" это, но вы можете сделать:

Добавить программу: /etc/rc.d/rc.local

Это будет запущена программа при запуске.

Если вы добавите '&' в конец строки, он будет запущен в фоновом режиме.

Если вы не хотите запускать программу вручную (не при запуске), вы можете переключиться на другую tty, нажав ctrl + alt + f1 (это откроет tty1 и будет работать с f1 - f6), затем запустите команду. Этот терминал вам не нужно открывать в окне, поэтому вам не нужно беспокоиться о его закрытии. Чтобы вернуться на рабочий стол, используйте ctrl + alt + f7.

1

Это бесконечный цикл. Вы можете запустить сценарий при запуске, и он будет работать вечно, пока вы не убьете сам процесс или не закроете компьютер.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import time 

while True: 
    print 'Hello' 
    time.sleep(2) # 2 second delay 
6

Из вашего вопроса вы подразумеваете, что вы собираетесь запустить скрипт из вашего терминала, а не какой-либо из методов управления сценарий запуска для Linux, как Systemd или выскочка или init.d скриптов.

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

1. Сделать это работать в фоновом режиме, добавляя «&» после вашего скрипта.

2. Когда вы закрываете терминал, связанная с ним оболочка посылает сигнал HUP всем процессам до его смерти. Чтобы игнорировать сигнал HUP и продолжать работать в фоновом режиме, вам нужно запустить свой скрипт с помощью «nohup».

Т.Л., д-р
запустить свой скрипт таким образом:

$ nohup python mypythonscript.py & 
Смежные вопросы