Python 金字塔获取当前用户/用户id而不访问请求

Python 金字塔获取当前用户/用户id而不访问请求,python,sqlalchemy,pyramid,Python,Sqlalchemy,Pyramid,是否有任何方法可以访问当前用户对象或至少id而不访问请求?比如说在模型中 我使用金字塔和炼金术 首先我想到了Singleton,但我认为当有更多用户时,它可能返回错误的对象 class UserSingleton(object): user = None def __new__(cls, user=None): UserSingleton.user = user return UserSingleton.user @classmetho

是否有任何方法可以访问当前用户对象或至少id而不访问请求?比如说在模型中

我使用金字塔和炼金术

首先我想到了Singleton,但我认为当有更多用户时,它可能返回错误的对象

class UserSingleton(object):
    user = None

    def __new__(cls, user=None):
        UserSingleton.user = user
        return UserSingleton.user

    @classmethod
    def get(cls):
        return cls.user
我需要将其用于我的模型,但我无法在此处传递请求,因为这是由orm事件调用的:

@classmethod
def log(cls, description, log_type=None, name=None):
    user = ??
    audit_log = cls(
        user_id=user.id if user else None,
        description=description,
        type=log_type,
        name=name
    )

    DBSession.add(audit_log)

    return audit_log

好的,通过执行以下操作找到解决方案:

from pyramid.threadlocal import get_current_request
request = get_current_request()

我认为数据库事件中没有当前用户,因为它们发生在请求的上下文之外。最佳做法是在函数中显式传递
请求
用户
,而不是依赖线程局部变量。