API Cartoraria
Find a file
2025-12-08 10:51:08 -03:00
abstracts [MVPTN-37] feat(Pesquisa): Adiciona query params nas conultas sqls 2025-12-02 18:23:53 -03:00
actions [MVPTN-37] feat(Pesquisa): Adiciona query params nas conultas sqls 2025-12-02 18:23:53 -03:00
config fix(Gitignore): remove arquivos temporários do versionamento 2025-09-17 12:30:16 -03:00
database deploy(feat) Ajuste na estrutura de pasta 2025-08-07 12:22:16 -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 deploy(fix): Ajuste no dockerfile 2025-08-07 14:22:16 -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 [MVPTN-126] feat(): Endpoint de cancelamento de itempedido 2025-12-04 18:00:42 -03:00
README.md docs(Readme): Adiciona configurações de servidor em produção 2025-12-08 10:51:08 -03:00
requirements.txt feat(Validações): Adicionado validações no cadastro do usuário 2025-08-29 14:33:25 -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 a preparação do ambiente virtual, instalação de dependências, configuração do banco de dados e ajuste de desempenho com múltiplos núcleos de CPU.


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 utiliza bibliotecas que dependem do Microsoft C++ Build Tools (Windows) ou build-essential (Linux).

Windows

Baixe e instale: https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/

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:

pip install -r requirements.txt

6. Configurar o Banco de Dados

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:

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 recomendada: UTF8
pool.size Conexões mínimas por núcleo
pool.max_overflow Conexões extras sob demanda

7. Modo Desenvolvimento

Para ambiente local, execute:

uvicorn main:app --reload

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

Acesse:

http://localhost:8000/docs

8. Modo Produção

No ambiente de produção, o ideal é usar o Gunicorn como gerenciador de processos, com o Uvicorn como worker ASGI.

Instalação

pip install gunicorn uvicorn

Execução com múltiplos núcleos

Use o comando abaixo para inicializar a aplicação com vários workers (núcleos):

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

Parâmetros explicados

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 (segundos)
--log-level info Define o nível de log padrão

Dica: o número de workers ideal é calculado por:

(número_de_CPUs * 2) + 1

Exemplo: para um servidor com 2 CPUs, use --workers 5.


Executar em background (Linux)

Para executar de forma persistente, use systemd ou supervisor. Exemplo com nohup (execução simples):

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

Para verificar se está rodando:

ps aux | grep gunicorn

9. Logs e Monitoramento

Os logs da aplicação são gerados pelo próprio Gunicorn. É recomendado redirecioná-los para arquivos:

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 gunicorn main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000