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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a30fc67d01f8468cf461358738b35faad224f4a9969b46f8498611f7f43f2d1 |
|
MD5 | f8c569e935becbb260cd10a632c3cfd4 |
|
BLAKE2b-256 | 766795b54a350cce6938523efe144bf94ea5ecdbdeb9d20af0296d7fe7132085 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa6b22b3db0760ebeab4fe2542cb4fbbeb4a2cb34d4734a90594005359676537 |
|
MD5 | 81cbbb690f1aba99aaf9a08214ee119d |
|
BLAKE2b-256 | 7ac8995d7886c5150b85372793679abf3e076e41e88fa740a4112e668385bf03 |