pkyad / fastapi_1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

test4

fastapiv2

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

Development Requirements

  • Python3.11.0
  • Pip
  • Poetry (Python Package Manager)

Installation

python -m venv venv
source venv/bin/activate
make install

Runnning Localhost

make run

Deploy app

make deploy

Running Tests

make test or pytest

Access Swagger Documentation

http://localhost:8080/docs

Access Redocs Documentation

http://localhost:8080/redoc

Project structure

Files related to application are in the app or tests directories. Application parts are:

app
|
| # Fast-API stuff
├── api                 - web related stuff.
│   └── routes          - web routes.
├── core                - application configuration, startup events, logging.
├── models              - pydantic models for this application.
├── services            - logic that is not just crud related.
├── main-aws-lambda.py  - [Optional] FastAPI application for AWS Lambda creation and configuration.
└── main.py             - FastAPI application creation and configuration.
|
├── data             - where you persist data locally
│   ├── interim      - intermediate data that has been transformed.
│   ├── processed    - the final, canonical data sets for modeling.
│   └── raw          - the original, immutable data dump.
│
└── tests            - pytest

GCP

Deploying inference service to Cloud Run

Authenticate

  1. Install gcloud cli
  2. gcloud auth login
  3. gcloud config set project <PROJECT_ID>

Enable APIs

  1. Cloud Run API
  2. Cloud Build API
  3. IAM API

Deploy to Cloud Run

  1. Run gcp-deploy.sh

Clean up

  1. Delete Cloud Run
  2. Delete Docker image in GCR

AWS

Deploying inference service to AWS Lambda

Authenticate

  1. Install awscli and sam-cli
  2. aws configure

Deploy to Lambda

  1. Run sam build
  2. Run `sam deploy --guiChange this portion for other types of models

Add the correct type hinting when completed

aws cloudformation delete-stack --stack-name <STACK_NAME_ON_CREATION>

Made by https://github.com/arthurhenrique/cookiecutter-fastapi/graphs/contributors with ❤️

Notes:

INSERT INTO notes (text, completed) VALUES ('first' , TRUE); INSERT INTO notes (text, completed) VALUES ('second' , TRUE);

docker exec test4-app-1 pytest

db_url = make_url(str(settings.db_url.with_path("/postgres"))) engine = create_async_engine(db_url, isolation_level="AUTOCOMMIT")

async with engine.connect() as conn:
    database_existance = await conn.execute(
        text(
            f"SELECT 1 FROM pg_database WHERE datname='{settings.db_base}'",  # noqa: E501, S608
        ),
    )
    database_exists = database_existance.scalar() == 1

if database_exists:
    print("Deleting DB")
    await drop_database()

async with engine.connect() as conn:  # noqa: WPS440
    await conn.execute(
        text(
            f'CREATE DATABASE "{settings.db_base}" ENCODING "utf8" TEMPLATE template1',  # noqa: E501
        ),
    )

About


Languages

Language:Python 98.4%Language:Dockerfile 1.2%Language:Shell 0.4%