在 webapp2 中将请求作为全局变量访问

发布于 2024-12-22 14:57:25 字数 364 浏览 3 评论 0原文

我正在将我的 appengine 应用程序从 Pylons 迁移到 webapp2。 在 pylon 中,请求和响应对象是全局的。然而,在 webapp2 它们作为对象属性(self.request, 自我反应)。

但我认为在 extras 包中使用 Local 模块是为了 以线程安全的方式访问全局变量。

我无法弄清楚如何作为全局访问请求对象 变量而不是 webapp2 应用程序中的 self.request ,因为它将保留我现有的控制器代码。

我找不到太多有关本地模块及其使用方法的文档。 Flask 和 Bottle 等其他框架也可以使用 contextLocal 来全局访问请求。因此,在 webapp2 中以相同的方式访问请求对象将是一个更可移植的代码。

I am migrating over my appengine application from Pylons to webapp2.
In pylons the request and response objects are global. However, in
webapp2 they are accessed as object attributes (self.request,
self.response).

But I assume using Local module in the extras package is meant for
accessing global variables in a thread safe manner.

I'm not able to figure out how to access request object as a global
variable instead of self.request in a webapp2 app, as it would preserve my existing controller code.

I was not able to find much documentation on local module and how to use it. Other frameworks like Flask and Bottle also have global access to request using contextLocal. So, it would be a more portable code to access request object the same way in webapp2 as well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

熊抱啵儿 2024-12-29 14:57:26

注册表在应用程序级别和请求级别都可用。之前的答案涉及应用程序级别。

下面的代码允许您在请求级别使用全局变量。

def instanceHtml():
    app = webapp2.get_app()
    try: 
        aInstance = app.request.registry[ 'instanceHtml' ]  ## retrieve previous object
        return aInstance
    except:
        aInstance = zhtml.Html()  ## instantiate whatever object you want
        app.request.registry[ 'instanceHtml' ] = aInstance  ## save object
        return aInstance

The registry is available at both the app level and the request level. The previous answer dealt with the app level.

Below is code that allows you to use globals at the request level.

def instanceHtml():
    app = webapp2.get_app()
    try: 
        aInstance = app.request.registry[ 'instanceHtml' ]  ## retrieve previous object
        return aInstance
    except:
        aInstance = zhtml.Html()  ## instantiate whatever object you want
        app.request.registry[ 'instanceHtml' ] = aInstance  ## save object
        return aInstance
牵你手 2024-12-29 14:57:26

我也无法找到全局请求对象。相反,我使用注册表在请求之间传递内容。看看这个:

http://webapp-improved.appspot.com/guide/app .html#registry

I was not able to find global request objects either. Instead I used the Registry to pass stuff around between requests. Check this out:

http://webapp-improved.appspot.com/guide/app.html#registry

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文