API Cartoraria
Find a file
2025-12-08 15:36:59 -03:00
abstracts [MVPTN-37] feat(Pesquisa): Adiciona query params nas conultas sqls 2025-12-02 18:23:53 -03:00
actions feat(Env): Ajusta a conexão do firebird para variavel de ambiente - 15:36 2025-12-08 15:36:59 -03:00
config fix(Config): Ajusta o caminho do condig 2025-12-08 14:33:46 -03:00
database feat(Env): Ajusta a conexão do firebird para variavel de ambiente 2025-12-08 15:30:23 -03:00
packages [MVPTN-126] feat(Pedido): Cria endpoints e recursos para estornar e ativar um pedido 2025-12-05 16:03:05 -03:00
schemas [MVPTN-37] feat(Pesquisa): Adiciona query params nas conultas sqls 2025-12-02 18:23:53 -03:00
.gitattributes deploy(feat) Ajuste na estrutura de pasta 2025-08-07 12:22:16 -03:00
.gitignore fix(Gitignore): remove arquivos temporários do versionamento 2025-09-17 12:31:24 -03:00
api.code-workspace [MVPTN-126] feat(CRUD): Implementa o crud de TServicoPEdido e TServicoItemPedido 2025-10-30 16:00:08 -03:00
Dockerfile feat(Env): Ajusta a conexão do firebird para variavel de ambiente - 15:36 2025-12-08 15:36:59 -03:00
env.bat feat(Env): Ajusta a conexão do firebird para variavel de ambiente 2025-12-08 15:23:34 -03:00
main.py [MVPTN-126] feat(Item): Adiciona o processamento de itens enviados através do pedido 2025-11-08 20:35:02 -03:00
Orius.postman_collection.json [MVPTN-106] feat(get): Feito o GET da tabela g_emolumento por sistema_id 2025-10-14 15:28:37 -03:00
python_limpa_cache.bat feat(Env): Ajusta a conexão do firebird para variavel de ambiente 2025-12-08 15:23:34 -03:00
README.md fix(Deploy): Ajustes diversos para deploy 2025-12-08 12:03:56 -03:00
requirements.txt fix(Deploy): Ajustes diversos para deploy 2025-12-08 12:03:56 -03:00
requirements2.txt [MVPTN-126] fix(Dev): Ajusta os locais de importação de arquivos 2025-11-06 17:31:49 -03:00
server.bat deploy(fix): ajuste de pydantic 2025-08-07 13:03:17 -03:00

Configuração do Projeto Python

Este guia descreve o passo a passo para configurar o ambiente de desenvolvimento e produção de um projeto Python, incluindo ambiente virtual, dependências, banco de dados, e ajuste de desempenho com múltiplos núcleos.


1. Clonar o Projeto

Clone o repositório do projeto a partir do Git:

git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git

2. Criar o Ambiente Virtual

Crie um ambiente virtual isolado para o projeto:

python -m venv venv

3. Ativar o Ambiente Virtual

Ative o ambiente virtual antes de instalar as dependências:

venv\Scripts\activate

Em sistemas Linux/Mac:

source venv/bin/activate

4. Instalar Dependências do Sistema

O projeto depende de compiladores nativos para algumas bibliotecas Python.

Windows

Baixe e instale o Microsoft C++ Build Tools: https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/

Durante a instalação, selecione o pacote:

Desktop Development With C++

Linux

Execute no terminal:

sudo apt update
sudo apt install -y build-essential libpq-dev

5. Instalar as Bibliotecas do Projeto

Com o ambiente virtual ativado, instale as dependências listadas no arquivo requirements.txt:

pip install -r requirements.txt

6. Configurar o Banco de Dados (Firebird)

O projeto utiliza o banco Firebird. Edite o arquivo de configuração em:

api/config/database/firebird.json

Exemplo:

{
  "host": "localhost",
  "name": "/data/base/CAIAPONIA.FDB",
  "port": 3050,
  "user": "SYSDBA",
  "password": "",
  "charset": "UTF8",
  "pool": {
    "pre_ping": true,
    "size": 5,
    "max_overflow": 10
  }
}

Campos principais:

Campo Descrição
host Endereço do servidor Firebird
name Caminho completo do arquivo .FDB
port Porta padrão 3050
user Usuário do banco
password Senha do usuário
charset Codificação (UTF8 recomendado)
pool.size Número de conexões fixas
pool.max_overflow Conexões extras sob demanda

7. Modo Desenvolvimento

Para ambiente local, execute:

uvicorn main:app --reload

O parâmetro --reload reinicia automaticamente a aplicação ao detectar alterações no código.

Acesse:

http://localhost:8000/docs

8. Modo Produção

A execução em produção varia conforme o sistema operacional.


Windows (modo produção simulado)

O Gunicorn não é compatível com Windows, pois depende do módulo fcntl exclusivo de sistemas Unix. Portanto, em ambiente Windows, recomenda-se usar o Uvicorn diretamente com múltiplos workers:

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

O parâmetro --workers define quantos processos simultâneos serão utilizados. Idealmente, use (número_de_CPUs * 2) + 1.

Alternativa compatível (Windows)

Instale e use o Hypercorn, uma alternativa semelhante ao Gunicorn:

pip install hypercorn
hypercorn main:app --workers 4 --bind 0.0.0.0:8000

Linux (modo produção real)

Em ambientes Linux (ou Docker), utilize o Gunicorn com o Uvicorn Worker para obter o máximo desempenho.

Instalar Gunicorn (caso ainda não instalado)

pip install gunicorn uvicorn

Executar com múltiplos núcleos

gunicorn main:app \
  -k uvicorn.workers.UvicornWorker \
  --workers 4 \
  --bind 0.0.0.0:8000 \
  --timeout 120 \
  --log-level info

Parâmetros principais

Parâmetro Função
-k uvicorn.workers.UvicornWorker Usa o Uvicorn como worker ASGI
--workers 4 Define o número de núcleos usados
--bind 0.0.0.0:8000 Expõe a aplicação em todas as interfaces
--timeout 120 Tempo limite de resposta (em segundos)
--log-level info Define o nível de logs

Dica de cálculo de workers

(número_de_CPUs * 2) + 1

Exemplo: servidor com 2 CPUs → --workers 5


Execução em segundo plano (Linux)

Para rodar a aplicação continuamente:

nohup gunicorn main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000 &

Verifique se está rodando:

ps aux | grep gunicorn

9. Logs e Monitoramento

É possível direcionar os logs de acesso e erro para arquivos dedicados:

gunicorn main:app \
  -k uvicorn.workers.UvicornWorker \
  --workers 4 \
  --bind 0.0.0.0:8000 \
  --access-logfile logs/access.log \
  --error-logfile logs/error.log

10. Estrutura Recomendada de Deploy

/app
├── main.py
├── api/
├── packages/
├── requirements.txt
├── logs/
│   ├── access.log
│   └── error.log
└── systemd/
    └── saas_api.service

11. Resumo dos Comandos

Etapa Comando
Clonar projeto git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git
Criar venv python -m venv venv
Ativar venv venv\Scripts\activate (Windows)
source venv/bin/activate (Linux/Mac)
Instalar dependências pip install -r requirements.txt
Rodar em desenvolvimento uvicorn main:app --reload
Rodar em produção (Windows) uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
Rodar em produção (Linux) gunicorn main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000
Alternativa (Windows) hypercorn main:app --workers 4 --bind 0.0.0.0:8000

12. Recomendações Finais

  • Em Windows, use Uvicorn ou Hypercorn apenas para testes e ambientes locais.
  • Para produção real, use Linux com Gunicorn + Uvicorn Worker, idealmente em container Docker.
  • Monitore o consumo de CPU/RAM e ajuste o número de workers conforme o ambiente.
  • Automatize o serviço em produção via systemd (ex: /etc/systemd/system/saas_api.service) para iniciar junto com o servidor.