Skip to main content
O Gunicorn é um servidor HTTP WSGI para Python que roda Flask, Django e outras aplicações WSGI em produção. Este guia mostra como iniciar a sua aplicação com o Gunicorn, ajustá-lo à RAM do seu plano e rodá-lo na Square Cloud.

Instale o Gunicorn

Instale o Gunicorn na sua máquina:
Adicione também o gunicorn ao seu requirements.txt, para que a Square Cloud o instale junto com as suas outras dependências:
requirements.txt

Uso básico

Para rodar uma aplicação com o Gunicorn, você precisa de uma aplicação WSGI, como uma feita com Flask ou Django, e precisa saber o nome do módulo e o nome da variável que contém o objeto da aplicação WSGI. Por exemplo, se você tiver uma aplicação Flask em um arquivo chamado app.py e a instância do Flask se chamar app, você pode executá-la com o Gunicorn usando o seguinte comando:
Neste comando:
  • python -m gunicorn executa o Gunicorn como um módulo Python.
  • --bind 0.0.0.0:80 faz o Gunicorn escutar em todas as interfaces de rede na porta 80.
  • app:app especifica o nome do módulo (app) e o nome da variável (app) que contém o objeto da aplicação WSGI.
Para Django, aponte o Gunicorn para o módulo wsgi.py que o Django cria dentro do pacote do seu projeto (troque myproject pelo nome do seu projeto):

Opções adicionais

O Gunicorn fornece diversas opções para personalizar seu comportamento. Estas são as mais comuns; a referência oficial de configurações do Gunicorn lista todas elas.

Workers

  • --workers <número>
Essa opção define o número de processos workers responsáveis por lidar com as requisições. Cada worker é um processo separado com a sua própria cópia da aplicação na memória, então na Square Cloud o limite costuma ser a RAM, não a CPU. Comece com 2 workers e adicione mais só depois de aumentar o MEMORY. Se a sua aplicação parar com LACK_OF_RAM, diminua o número de workers.
Não dimensione os workers com multiprocessing.cpu_count() nem com a fórmula (2 x $num_cores) + 1: dentro de um container, a contagem de núcleos pode ser a da máquina host, o que inicia dezenas de workers e esgota a sua RAM.

Name

  • --name <nome>
  • -n <nome>
Essa opção define o nome do processo para o Gunicorn.

Worker class

  • --worker-class <classe>
  • -k <classe>
Essa opção define o tipo de worker a ser usado. O padrão é sync, mas você também pode usar gevent, eventlet, tornado ou outros tipos de workers.

Arquivo de configuração

Você também pode definir opções do Gunicorn em um arquivo de configuração Python. O Gunicorn carrega automaticamente um arquivo chamado gunicorn.conf.py do diretório onde ele roda, que na Square Cloud é a raiz do seu projeto. Para qualquer outro nome de arquivo, passe-o com -c <arquivo>.
gunicorn.conf.py
Com esse arquivo no seu projeto, o comando de início não precisa mais da opção --bind.

Rode na Square Cloud

Crie um arquivo squarecloud.app na raiz do projeto e coloque o comando do Gunicorn no campo START, para que a Square Cloud inicie a sua aplicação com o Gunicorn em vez do padrão python app.py:
O Gunicorn precisa fazer bind em 0.0.0.0:80: a Square Cloud entrega o tráfego do seu subdomínio na porta 80 da sua aplicação. A Square Cloud também define a variável de ambiente PORT como 80, e o Gunicorn a lê: sem a opção --bind, ele escuta em 0.0.0.0:$PORT quando a PORT está definida.
Para Django, use myproject.wsgi:application no START e o manage.py do seu projeto como MAIN. Os tutoriais de Flask e Django cobrem o deploy completo.

Próximos passos

Flask

Faça deploy de uma aplicação Flask com o Gunicorn.

Django

Faça deploy de um projeto Django com o Gunicorn.

A aplicação não inicia

Corrija EADDRINUSE, LACK_OF_RAM e outras falhas na inicialização.

Gostou desse artigo?

  • Criamos este conteúdo com o máximo de cuidado para oferecer a melhor ajuda possível. Se o artigo contribuiu de alguma forma, valorize nosso trabalho! Desenvolvedores já avaliaram a Square Cloud com 4,9/5 em 402 avaliações no Google e Trustpilot: deixe a sua também! Isso nos ajuda a entender o que é mais importante para você.

Google Reviews

Deixe sua avaliação no Google Reviews.

Trustpilot

Deixe sua avaliação no Trustpilot.