Advertisement
  1. Code
  2. Web Development

Monitore e Controle Aplicações Usando Supervisor: Parte 1

Scroll to top
Read Time: 4 min
This post is part of a series called Monitor and Control Applications Using Supervisor.
Monitor and Control Applications Using Supervisor: Part 2

() translation by (you can also view the original English article)

Supervisor é uma ferramenta de monitoração que controla vários processos filhos e controla o início/reinício desses processos filhos quando eles encerram abruptamente ou encerram por alguma razão. Ele pode ser estendido para controlar os processos via XML-RPC API para locais remotos sem logging para o servidor. Eu cobrirei o XML-RPC API na segunda parte desta série de duas partes.

Na primeira parte desta série de tutorial, eu irei guiá-lo através da configuração do Supervisor para que ele trabalhe com a nossa aplicação. Para isso, vou criar um simples aplicativo no Flask juntamente com Gunicorn para atuar como nosso servidor WSGI HTTP.

Presumo que você tenha uma compreensão básica do Flask, Gunicorn e ambiente instalação práticas recomendadas usando virtualenv para ser seguido ao desenvolver um aplicativo Python.

Instalando pacotes

Os seguintes pacotes precisam ser instalados para desenvolver e controlar o aplicativo que estaremos desenvolvendo.

1
$ pip install gunicorn supervisor Flask

O aplicativo Trivial

Agora vou criar uma aplicação trivial Flask. Esta aplicação é pequena mas satisfará as necessidades deste tutorial.

Abaixo está a estrutura do aplicativo:

1
flask_app/
2
    my_app/
3
        - __init__.py
4
        - views.py

flask_app/my_app/__init__.py

1
from flask import Flask
2
app = Flask(__name__)
3
4
import my_app.views

No arquivo acima, o aplicativo foi configurado e iniciado.

flask_app/my_app/views.py

1
from my_app import app
2
3
@app.route('/')
4
def hello_world():
5
    return 'Hello to the World of Flask!'

No arquivo acima, eu criei endpoint simples de Hello World.

Para executar o aplicativo como um processo, podemos usar Gunicorn. Para verificar se o Gunicorn está funcionando conforme o esperado, basta que execute o seguinte comando a partir da pasta do aplicativo.

1
$ gunicorn -w 4 -b 127.0.0.1:8000 my_app:app

Depois disso, aponte seu navegador para http://127.0.0.1:8000/ para abrir a aplicação Página inicial.

Configurando e usando o Supervisor

Agora, precisamos fazer o mesmo usando o Supervisor para que ele seja executado como um daemon e para que seja controlado pelo Supervisor em si, ao invés de intervenção humana.

Em primeiro lugar, precisamos de um arquivo de configuração do Supervisor. Supervisor, por padrão, procura uma pasta etc que tenha um arquivo chamado supervisord.conf. Em instalações de todo o sistema, esta pasta é /etc/, e em virtualenv, Vai procurar uma pasta etc em virtualenv e então se volta para /etc/.

No caso de uma instalação de todo o sistema, execute:

1
$ echo_supervisord_conf > /etc/supervisord.conf

No caso de virtualenv, de dentro da pasta de raiz do virtualenv, execute:

1
$ echo_supervisord_conf > etc/supervisord.conf

O programa echo_supervisord_conf é fornecido por Supervisor; imprime um arquivo de configuração de exemplo para o local especificado. Isso criará um arquivo chamado supervisord.conf no local especificado no comando acima.

Para configurar o Supervisor para nosso aplicativo, adicione o seguinte bloco em algum lugar neste arquivo:

1
[program:supervisor_demo]
2
command=<path/to/virtualenv>/bin/gunicorn -w 4 -b 127.0.0.1:8000 my_app:app
3
directory=<path/to/virtualenv>/supervisor-tutsplus-demo
4
user=someuser # Relevant user

5
autostart=true
6
autorestart=true
7
stdout_logfile=/tmp/app.log
8
stderr_logfile=/tmp/error.log

Aqui vamos configurar o comando que precisa ser executado e de qual local de diretório precisa fazê-lo sob a qual o usuário. Também especificado se é necessário reiniciar o aplicativo em caso de qualquer falha. Locais dos arquivos de log também podem ser especificados. Existem muitas outras opções de configuração, que podem ser pesquisadas na documentação oficial do Supervisor.

Anote que você nunca deve executar os aplicativos como um usuário root. Isto é uma enorme falha de segurança bem como o aplicativo trava, que podendo prejudicar o sistema operacional em si.

Para executar o aplicativo usando o Supervisor, execute os seguintes comandos:

1
$ supervisord
2
$ supervisorctl status
3
supervisor_demo        RUNNING   pid 22550, uptime 0:00:04

O primeiro comando invoca o servidor supervisord, e o outro dá um status de todos os processos da filhos.

Cada vez que fizer uma alteração em seu aplicativo e em seguida deseja reiniciar Gunicorn para refletir as alterações, execute o seguinte comando:

1
$ supervisorctl restart all

Você também pode passar processos específicos em vez de reiniciar tudo:

1
$ supervisorctl restart supervisor_demo

Supervisor também fornece uma interface Web que pode ser habilitada, permitindo que o bloco de configuração de inet_http_server em supervisord.conf. Essa interface Web pode ser acessada na url http://localhost:9001/.

Conclusão

Neste tutorial, vimos como configurar Supervisor e usá-lo para executar um aplicativo como um processo de daemon e controlar os processos coletivamente ou seletivamente. Na segunda parte desta série de tutorial, veremos como controlar e interrogar o Supervisor e seus programas/processos usando a API XML-RPC.

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.