Skip to main content

reddit edge request context baggage

Project description

edgecontext.py

Documentation: https://reddit-edgecontext.readthedocs.io/en/latest/

Services deep within the backend often need to know information about the client that originated the request, such as what user is authenticated or what country they're in. Baseplate services can get this information from the edge context which is automatically propagated along with calls between services.

This library provides a Thrift specification of an edge context payload and a corresponding implementation of the EdgeContextFactory interface from Baseplate.py.

Usage

Add the EdgeContextFactory to application startup:

from baseplate import Baseplate
from baseplate.lib.secrets import secrets_store_from_config
from reddit_edgecontext import EdgeContextFactory


def make_processor(app_config):
    secrets = secrets_store_from_config(app_config, timeout=60)
    edgecontext_factory = EdgeContextFactory(secrets)

    # pass edgecontext_factory to your framework's integration
    # for Thrift: baseplate.frameworks.thrift.baseplateify_processor
    # for Pyramid: baseplate.frameworks.pyramid.BaseplateConfigurator

Then read fields while handling requests:

def my_view(request):
    return request.edgecontext.user.id

See the documentation for all the available fields.

Development

A Dockerfile is provided to get a development environment running. To use it, build the base Docker image:

$ docker build -t edgecontext .

And then fire up the environment and use the provided Makefile targets to do common tasks:

$ docker run -it -v $PWD:/src -w /src edgecontext
$ make fmt

The following make targets are provided:

  • fmt: Apply automatic formatting to the source code.
  • thrift: Generate code from the Thrift IDL. Run fmt after doing this.
  • lint: Run linters on the code.
  • test: Run the test suite.
  • docs: Build the docs. Output can be found in build/html/.

The generated Thrift code is committed to the Git repo, so if you change reddit_edgecontext/edgecontext.thrift make sure to run make thrift fmt and commit those changes as well.

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

reddit_edgecontext-1.0.0a4.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

reddit_edgecontext-1.0.0a4-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file reddit_edgecontext-1.0.0a4.tar.gz.

File metadata

  • Download URL: reddit_edgecontext-1.0.0a4.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.7.0 requests/2.25.1 setuptools/47.3.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for reddit_edgecontext-1.0.0a4.tar.gz
Algorithm Hash digest
SHA256 4d92c713852441f8eff0d23a121c63f3687cd1e00f738b8ddba3780c2d30d645
MD5 928d4448090fe33762f2c1a9461cdf33
BLAKE2b-256 18fefa597f370c4338b34e567754aaae0f0d0561454e831c01293ce8b32605b5

See more details on using hashes here.

File details

Details for the file reddit_edgecontext-1.0.0a4-py3-none-any.whl.

File metadata

  • Download URL: reddit_edgecontext-1.0.0a4-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.7.0 requests/2.25.1 setuptools/47.3.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for reddit_edgecontext-1.0.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 2666a6ac72f00b0302bcd4403bdb46d37bb0ed133540a135e6fe3a472bc74bd2
MD5 cfaa6be5feecaab1aee2a2d8456d5ecd
BLAKE2b-256 af93e0238aaa2c7b305664cdb95619dbf31576bb86f7aa951eab98fc1ed37584

See more details on using hashes here.

Supported by

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