Skip to main content

Global thread context manager

Project description

global-manager

Tests codecov Mypy

Global thread context manager.

from typing import Optional
import dataclasses
import logging
from global_manager import GlobalManager

logger = logging.getLogger('my_view')

@dataclasses.dataclass
class UserContext:
    """Some context"""
    ip: str
    profile_id: int

class UserContextManager(GlobalManager):
    @classmethod
    def get_current_user_context(cls) -> Optional[UserContext]:
        """a business meaning method name is a good practice"""
        return cls.get_current_context()


def my_func():
    user_context: Optional[UserContext] = UserContextManager.get_current_user_context()
    # retrieve context
    logger.debug('my_view profile_id=%s, ip=%s', user_context.profile_id, user_context.ip)
    # other logic ...


# some where in code, m.b. in web framework
def my_view(request):
    # Imagine that the data is obtained from the request
    user_context = UserContext(ip='127.0.0.1', profile_id=1)
    
    with UserContext(user_context):
        return my_func()

Context in context

with UserContext(uc1):
    UserContext.get_current_user_context()  # uc1 context
    
    with UserContext(uc2):
        UserContext.get_current_user_context() # uc2 context

    UserContext.get_current_user_context()  # uc1 context

UserContext.get_current_user_context()  # None

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

global_manager-1.0.0.tar.gz (2.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

global_manager-1.0.0-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file global_manager-1.0.0.tar.gz.

File metadata

  • Download URL: global_manager-1.0.0.tar.gz
  • Upload date:
  • Size: 2.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for global_manager-1.0.0.tar.gz
Algorithm Hash digest
SHA256 abbd6a7d679fbfea9bed288d6e9071558610ab18d3125735a109818bb270b655
MD5 d269c885b34d7a1d21dc421b76b48138
BLAKE2b-256 0d6614b589dddd4cc1cde727f4a2709105a979e9de6384afe7d0aeab2b8d2fd9

See more details on using hashes here.

File details

Details for the file global_manager-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: global_manager-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for global_manager-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c1dd2c87fb1c478e4be1163511d7ef2b3300d2e6bcad1496e9b4536074a64dd
MD5 efe18de6ee66f43311ed965468d09a39
BLAKE2b-256 61637d951e75a7e40b1fb73f5b82062b1d423048b5dba7d34ce30f211f235899

See more details on using hashes here.

Supported by

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