Global thread context manager
Project description
global-manager
Global thread context manager.
Installation
pip install global-manager
Examples
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[UserContext]):
@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
Async notations is supported too.
async with UserContext(uc1):
UserContext.get_current_user_context() # uc1 context
async 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.2.tar.gz
(3.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file global_manager-1.0.2.tar.gz.
File metadata
- Download URL: global_manager-1.0.2.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9048a3a4a4fb52590c7d73731eae5c7657a3b3143029251458d877d71c20773c
|
|
| MD5 |
c73037c8811d5c78473e9400255a0009
|
|
| BLAKE2b-256 |
a2eb337be4b6ded8653e33f889e7aacedf30d8d284f7ccc719dfe25d74af8a39
|
File details
Details for the file global_manager-1.0.2-py3-none-any.whl.
File metadata
- Download URL: global_manager-1.0.2-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d8e119c08aca7242f43842bba3e76474ce1d39cce04980ae0db01ee2cc42628
|
|
| MD5 |
7dbaf87d9ee2a2729d37e548878433ad
|
|
| BLAKE2b-256 |
e07599a4309900cc10b7ab0b0a37b115c0ef1acc5b75019f117833ff5c26404e
|