【问题标题】:/_ah/queue/__deferred__ in App Engine LogsApp Engine 日志中的 /_ah/queue/__deferred__
【发布时间】:2014-09-19 12:48:52
【问题描述】:

我有一个使用 Google Cloud SQL 的 App Engine 应用程序,并且从我的应用程序的一个页面中我正在执行一些数据库操作;每当访问此页面时,它都无法执行所有数据库操作。当我转到控制台时,我看到的只是/_ah/queue/__deferred__

我能够在 localhost 上运行应用程序而没有任何问题,因此代码没有错误,但是,部署后 Cloud SQL 存在问题。

注意:我没有在我的代码中的任何地方使用过队列。

/_ah/queue/__deferred__出现在 App Engine 日志中的真正原因是什么?

【问题讨论】:

    标签: java sql google-app-engine google-cloud-sql


    【解决方案1】:

    我遇到了类似的问题。我发现在我的一个过滤器中为每个传入连接打开会话:

    httpRequest.getSession(true);
    //or the one below - both opens a valid HTTP Session
    httpRequest.getSession();
    

    我的 appengine-web.xml 被配置为异步存储会话

    <sessions-enabled>true</sessions-enabled>
    <async-session-persistence enabled="true"/>
    

    这导致在默认队列中创建了许多任务,并且每个任务都试图存储一个空会话。为避免这种情况,请确保您只为正确的请求打开会话。通过修复过滤器或更改 web.xml

    中的过滤器 url-patterns

    【讨论】:

    • 在我的 appengine-web.xml 中我没有设置 。我只启用了会话。
    【解决方案2】:

    除非您指定队列名称,否则所有延迟任务都会进入“默认”任务队列。从那里,您可以重新运行,如果您在本地开发服务器(调试模式)上,您可以单步执行代码。

    【讨论】:

    • 我没有在我的代码中的任何地方使用队列,那么为什么 App Engine 将操作推送到队列,当我实际查看队列时,当它出现在日志中时,没有队列和我的数据库操作失败
    猜你喜欢
    • 2017-08-10
    • 2017-01-09
    • 2019-01-18
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多