API Cartoraria
Find a file
2025-12-29 17:13:48 -03:00
abstracts fix(Ruff): Ajuste automático do código 2025-12-08 16:35:00 -03:00
actions feat(OnlyOffice): Ajusta para trabalhar com rtf 2025-12-29 17:13:18 -03:00
config fix(Config): Ajusta o caminho do condig 2025-12-08 14:33:46 -03:00
database feat(): Ajustes nos detalhes do pedido de Balcão 2025-12-16 15:06:47 -03:00
interfaces feat(ServiceFactory): Criação de importação de classes de forma dinâmica mais otimizada 2025-12-17 09:56:19 -03:00
packages feat(OnlyOffice): Ajusta para trabalhar com rtf 2025-12-29 17:13:48 -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 Debug 2025-12-23 11:46:37 -03:00
env.bat 1610 2025-12-09 16:10:46 -03:00
main.py feat(Certidao): Adiciona recursos para manipular certidões 2025-12-22 18:03:46 -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 deploy(Dockerfile): Ajusta o dockerfile para deploy 2025-12-09 09:40:36 -03:00
README.md feat(Readem): Atualiza o readme 2025-12-29 16:19:46 -03:00
requirements.txt fix(requirements): Ajuste do freeze 2025-12-23 09:10:26 -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. Configuração do Banco de Dados (Firebird)

Crie o arquivo .env na raiz do projeto e configure as variáveis de ambiente necessárias para a conexão com o banco de dados Firebird:

ORIUS_API_FDB_HOST=localhost
ORIUS_API_FDB_NAME=S:/Bases/SANTARITA.FDB
ORIUS_API_FDB_PORT=3050
ORIUS_API_FDB_USER=SYSDBA
ORIUS_API_FDB_PASSWORD=302b3c
ORIUS_API_FDB_CHARSET=UTF8
ORIUS_API_FDB_POOL_PRE_PING=true
ORIUS_API_FDB_POOL_SIZE=5
ORIUS_API_FDB_POOL_MAX_OVERFLOW=10
ORIUS_CLIENT_STATE=go

Essas configurações definem o acesso ao banco, o charset e o gerenciamento de conexões da aplicação.


7. Modo Desenvolvimento

Execute a aplicação em ambiente local:

uvicorn main:app --reload

O modo --reload recarrega a aplicação automaticamente ao detectar alterações no código.

Acesse a documentação da API em:

http://localhost:8000/docs

Opcionalmente, para expor a aplicação na rede:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

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.