如何在app引擎cron作业中访问应用程序的路由?

时间:2017-09-14 18:17:22

标签: google-app-engine cron google-app-engine-python

所以我在main.py内为我的应用程序定义了路由,例如:

app = webapp2.WSGIApplication([
    webapp2.Route('/',          handler=HomePage,       name="home")
])

在cron工作中我似乎无法访问应用程序的路线,例如这不起作用:

self.uri_for('home')

我在网上找到了一个修补它的片段,但使用它很难看:

cls.app.router.add(r)

r将是一系列路线。

有没有办法在app引擎cron作业中访问应用程序的路径?

1 个答案:

答案 0 :(得分:2)

您的示例不正确,似乎是simple routesextended routes之间的交叉。

为了能够使用self.uri_for('home'),您需要使用命名路由,即扩展路由:

app = webapp2.WSGIApplication([
    webapp2.Route(r'/', handler=HomePage, name='home'),
])

self.uri_for('home') 应该工作的情况下,假设selfwebapp2.RequestHandler个实例。

解决方法看起来很丑陋,但这几乎是uri_for under the hood所做的事情:

def uri_for(self, _name, *args, **kwargs):
    """Returns a URI for a named :class:`Route`.

    .. seealso:: :meth:`Router.build`.
    """
    return self.app.router.build(self.request, _name, args, kwargs)