Skip to main content

pymacaron logo

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)

Source distribution for pymacaron 2.0.345
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

Release history Release notifications | RSS feed

This release

2.0.345 This release

1 release file

2.0.343

1 release file

2.0.342

1 release file

2.0.335

1 release file

2.0.332

1 release file

2.0.331

1 release file

2.0.329

1 release file

2.0.328

1 release file

2.0.327

1 release file

2.0.326

1 release file

2.0.325

1 release file

2.0.323

1 release file

2.0.315

1 release file

2.0.314

1 release file

2.0.312

1 release file

2.0.310

1 release file

2.0.309

1 release file

2.0.307

1 release file

2.0.306

1 release file

2.0.304

1 release file

1.0.258

1 release file

1.0.257

1 release file

1.0.256

1 release file

1.0.255

1 release file

1.0.254

1 release file

1.0.253

1 release file

1.0.252

1 release file

1.0.247

1 release file

1.0.246

1 release file

1.0.245

1 release file

1.0.243

1 release file

1.0.242

1 release file

1.0.241

1 release file

1.0.238

1 release file

1.0.237

1 release file

1.0.236

1 release file

1.0.235

1 release file

1.0.234

1 release file

1.0.233

1 release file

1.0.231

1 release file

1.0.230

1 release file

1.0.229

1 release file

1.0.228

1 release file

1.0.226

1 release file

1.0.225

1 release file

1.0.224

1 release file

1.0.223

1 release file

1.0.221

1 release file

1.0.220

1 release file

1.0.219

1 release file

1.0.217

1 release file

1.0.216

1 release file

1.0.213

1 release file

1.0.212

1 release file

1.0.211

1 release file

1.0.207

1 release file

1.0.206

1 release file

1.0.204

1 release file

1.0.203

1 release file

1.0.202

1 release file

1.0.194

1 release file

1.0.193

1 release file

1.0.192

1 release file

1.0.186

1 release file

1.0.185

1 release file

1.0.184

1 release file

1.0.183

1 release file

1.0.181

1 release file

1.0.180

1 release file

1.0.179

1 release file

1.0.178

1 release file

1.0.177

1 release file

1.0.175

1 release file

1.0.174

1 release file

1.0.172

1 release file

1.0.170

1 release file

1.0.169

1 release file

1.0.167

1 release file

1.0.163

1 release file

1.0.162

1 release file

1.0.159

1 release file

1.0.158

1 release file

1.0.157

1 release file

1.0.154

1 release file

1.0.143

1 release file

1.0.142

1 release file

1.0.141

1 release file

1.0.140

1 release file

1.0.139

1 release file

1.0.138

1 release file

1.0.137

1 release file

1.0.136

1 release file

1.0.135

1 release file

1.0.134

1 release file

1.0.133

1 release file

1.0.132

1 release file

1.0.131

1 release file

1.0.129

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page