Pymacaron
Python microservice framework based on Flask, OpenAPI and Celery, deployable on GKE and Beanstalk
PyMacaron's documentation is available at http://pymacaron.com/.
This page dives deeper into internal implementation details.
Deep dive
Built-in endpoints
The following endpoints are built-in into every pymacaron instance, based on this swagger specification:
# Assuming you did in a separate terminal:
# $ python server.py --port 8080
$ curl http://127.0.0.1:8080/ping
{}
$ curl http://127.0.0.1:8080/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
$ curl http://127.0.0.1:8080/auth/version
{
"error_description": "There is no Authorization header in the HTTP request",
"error_id": "17f900c8-b456-4a64-8b2b-83c7d36353f6",
"status": 401,
"error": "AUTHORIZATION_HEADER_MISSING"
}
$ curl -H "Authorization: Bearer eyJpc3M[...]y8kNg" http://127.0.0.1:8080/auth/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
Loading api clients from a standalone script
It may come very handy within a standalone script to be able to call REST apis through the pymacaron framework, to get object marshalling and error handling out of the box. It is done as follows:
import flask
from pymacaron import apipool
from pymacaron.exceptions import is_error
# Declare a Flask app and mock its context
app = flask.Flask(__name__)
with app.test_request_context(''):
# Then load client libraries against a given set of libraries
api = API(app)
api.load_clients(apis=['login', 'search'])
# And you can now call those apis seamlessly!
result = ApiPool.login.client.do_login(
ApiPool.login.model.LoginData(
name='foobar',
password='youdontwanttoknow'
)
)
if is_error(result):
log.error("Oops. Failed to login user")
Author
Erwan Lemonnier
github.com/pymacaron
github.com/erwan-lemonnier
www.linkedin.com/in/erwan-lemonnier/
Metadata
Release files for pymacaron 2.0.345
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pymacaron-2.0.345.tar.gz | 44.4 kB | Details |
Release files / pymacaron-2.0.345.tar.gz
| Download URL | pymacaron-2.0.345.tar.gz |
|---|---|
| Size | 44.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61ea65fdd8a2ca52f247bb653c0e891abbe2cbe01b0916b1f49dae3758801417
|
|
BLAKE2b-256 checksum How to use checksums |
1813dd652706c6bead1829fc075855591c8b6057e6260df5ff98b233aac392c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.15.0 pkginfo/1.8.3 requests/2.28.1 setuptools/65.3.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.13
|