Como configurar a inicialização do flask server?

1

Eu tenho um servidor web que é baseado na combinação de flask + tornado. Funciona dentro de um ambiente virtual (configurado com python virtualenv).

Eu quero que o servidor seja iniciado automaticamente na inicialização, de um usuário comum. O que eu fiz para conseguir isso:

1) Eu escrevi um script de inicialização com o seguinte conteúdo:

cd /home/ubuntu/myserver
# enter virtualenv
source venv/bin/activate
# launch
python app.py > serverlog.log 2&>1 &

2) Eu configurei um crontab com crontab -e como:

SHELL=/bin/bash
@reboot /home/ubuntu/start_service.sh

Quando executo o script de inicialização a partir da linha de comando, tudo é iniciado corretamente. Mas depois da reinicialização em serverlog.log eu vejo um stacktrace que informa de falha na vinculação à porta 5000. o que posso fazer para corrigir isso?

    
por Srv19 02.02.2015 / 09:41

1 resposta

1

O Crontab não é inteligente o suficiente para manter seu servidor ativo. Quando cai, tem que esperar até que o crontab corra novamente; seus clientes receberão um erro 404 do servidor defeituoso.

Eu aconselho você a usar algo como Supervisor . Você pode instalá-lo usando easy_install como

   easy_install supervisor

Você precisará lidar com Supervisord e Supervisorctl. O primeiro é um gerenciador de processos demoníacos que executará e garantirá que o PID do seu

python app.py > serverlog.log 2&>1 &

continue correndo, não importa o quê. Você será capaz de fazer isso criando um programa chamado no supervisord.conf como

[program:flasktornado]
command=python app.py > serverlog.log 2&>1 &

Supervisorctl é como você controla [start | parar | reiniciar] o programa que você acabou de criar no arquivo de configuração supervisord. Este pode ajudá-lo .

    
por 22.04.2015 / 23:05