Skip to main content

Configuration Driven API

Project description

Flaskonf

Configuration Driven API

Installation

Under your python environment

pip install flaskonf

Create API with configuration json files

Suppose you have configuration files like following

!ls ../tests/confs/
la.json       shanghai.json
!cat ../tests/confs/*.json
{
    "name":"Los Angeles",
    "country":"United States",
    "sites":["universal studio", "griffith observatory", "union station"]
}
{
    "name":"Shanghai",
    "country":"China",
    "sites":["french concession", "xin tiandi", "disney resort"]
}
from flaskonf.api import FlaskonfAPI
from typing import Dict
app = FlaskonfAPI("AnConfAPI")

Bind the app to the configuration directory

Example directory is for test inputs example, you can just leave it empety for now

app.build_on_config(
    confs_dir="../tests/confs/",
    examples_dir="../tests/examples/" )

Create API blueprint

The syntax looks like creating API, but this is a blueprint based on what we will create an API for each json file

@app.conf_route("/guide/", nobuild=True)
def guide_api(inputs: Dict):
    data = inputs['data']
    conf = data["conf"]
    user = data["user"]
    return {"city_data": conf, "user": user}

app.build_flaskonf()

Notice, the configuration data is accessible in the decorated function

The rest is flask usual you are familiared with, if you run like following, you can visit localhost:6060/guide/la/ or localhost:6060/guide/shanghai/ to test your API

app.run("0.0.0.0", port = 6060)
 * Serving Flask app "AnConfAPI" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off


 * Running on http://0.0.0.0:6060/ (Press CTRL+C to quit)
INFO:werkzeug: * Running on http://0.0.0.0:6060/ (Press CTRL+C to quit)

When loading API components takes effort

eg. when you have to load huge AI model into memory when starting the server

Set nobuild=True

@app.conf_route("/guide2/", nobuild=False)
def build_city_guide(conf_file: str, conf: Dict):
    logging.info(f"{conf}")
    # doing other things for building API here
    # like load huge model into memory with configuration
    def guide_api(inputs: Dict):
        data = inputs['data']
        user = data["user"]
        return {"city_data": conf, "user": user}
    return guide_api

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flaskonf-0.0.4.tar.gz (121.4 kB view details)

Uploaded Source

Built Distribution

flaskonf-0.0.4-py3-none-any.whl (121.7 kB view details)

Uploaded Python 3

File details

Details for the file flaskonf-0.0.4.tar.gz.

File metadata

  • Download URL: flaskonf-0.0.4.tar.gz
  • Upload date:
  • Size: 121.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.4

File hashes

Hashes for flaskonf-0.0.4.tar.gz
Algorithm Hash digest
SHA256 3a30fc67d01f8468cf461358738b35faad224f4a9969b46f8498611f7f43f2d1
MD5 f8c569e935becbb260cd10a632c3cfd4
BLAKE2b-256 766795b54a350cce6938523efe144bf94ea5ecdbdeb9d20af0296d7fe7132085

See more details on using hashes here.

File details

Details for the file flaskonf-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: flaskonf-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 121.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.4

File hashes

Hashes for flaskonf-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aa6b22b3db0760ebeab4fe2542cb4fbbeb4a2cb34d4734a90594005359676537
MD5 81cbbb690f1aba99aaf9a08214ee119d
BLAKE2b-256 7ac8995d7886c5150b85372793679abf3e076e41e88fa740a4112e668385bf03

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page