在Appengin中,每个请求都会到达服务器两次

2024-10-02 16:35:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在appengine有一个小应用程序。在我的本地开发服务器中,每个请求都会访问服务器两次。
在调试模式下,我可以看到get方法调用了两次。
这在chrome和firefox浏览器中都会发生。 这是本地服务器的日志。。在

INFO     2011-03-12 00:44:31,076 dev_appserver.py:3317] "GET /movie/tanu_weds_manu/rating-review-video HTTP/1.1" 200 -
INFO     2011-03-12 00:44:32,345 dev_appserver.py:3317] "GET /css/fb.css HTTP/1.1" 200 -
INFO     2011-03-12 00:44:32,588 dev_appserver.py:3317] "GET /css/wianga-movie.0.1.css HTTP/1.1" 200 -
INFO     2011-03-12 00:45:46,648 dev_appserver.py:3317] "GET /movie/tanu_weds_manu/rating-review-video HTTP/1.1" 200 -
INFO     2011-03-12 00:45:46,911 dev_appserver.py:3317] "GET /img/wianga-fb-50.gif HTTP/1.1" 200 -
INFO     2011-03-12 00:45:47,177 dev_appserver.py:3317] "GET /img/arrow_green.gif HTTP/1.1" 200 -
INFO     2011-03-12 00:45:47,470 dev_appserver.py:3317] "GET /image/movie/tanu_weds_manu HTTP/1.1" 200 -
INFO     2011-03-12 00:45:47,717 dev_appserver.py:3317] "GET /js/jquery.qtip-1.0.0-rc3.min.js HTTP/1.1" 200 -
INFO     2011-03-12 00:45:47,970 dev_appserver.py:3317] "GET /js/wianga.0.1.js HTTP/1.1" 200 -
INFO     2011-03-12 00:46:37,473 dev_appserver.py:3317] "GET /movie/tanu_weds_manu/rating-review-video HTTP/1.1" 200 -

更新了:情况越来越糟,我查看了应用程序中的日志控制台。那里对于一个请求,它会点击3次以上。在

^{pr2}$

我得到了同样的行为在hellowrld应用程序从阿彭金图罗里亚尔。。。 应用程序yaml

version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py

记录hello world单个请求的示例…

INFO     2011-03-12 06:08:06,299 dev_appserver_main.py:507] Running application wianga-movie on port 8080: http://localhost:8080
INFO     2011-03-12 06:08:12,506 dev_appserver.py:3317] "GET / HTTP/1.1" 200 -
INFO     2011-03-12 06:08:13,721 dev_appserver.py:3317] "GET / HTTP/1.1" 200 -
INFO     2011-03-12 06:08:13,838 dev_appserver.py:3317] "GET /favicon.ico HTTP/1.1" 200 -
INFO     2011-03-12 06:08:13,953 dev_appserver.py:3317] "GET / HTTP/1.1" 200 -

Tags: pydevinfo服务器应用程序httpgetjs
1条回答
网友
1楼 · 发布于 2024-10-02 16:35:13

当我设置应用程序yaml我刚刚浏览了这一页:http://code.google.com/appengine/docs/python/config/appconfig.html 你必须像一个正则表达式解析器那样思考。任何与前面的表达式不匹配的内容都会落入通配符处理程序中并导致奇怪。在

我注意到的一点是,您应该将login: admin添加到任务队列处理程序中。这将防止外部请求意外命中该URL。在

另外,当您向处理程序提交任务时,如果不包括尾随斜杠(/task?blah=something而不是/task/?blah=something),则请求将通过通配符处理程序并发送到主页.py. 这种情况也可能发生在/image//browse/和{}。您应该将日志记录调用放入这些处理程序中,以确保它们在预期的时候被调用。在

没有什么比你明显的错误更让我吃惊了应用程序yaml不过。但是,由于日志中显示了get,这表明有东西在请求该URL,而不仅仅是get方法在内部被调用两次。在

编辑:

等一下,注意到你的应用程序yaml两次。你不应该那样做。在

- url: /movie/(.*)/rating-review-video/ 
  script: /wianga/site/MoviePage.py 
- url: /movie/(.*)/rating-review-video 
  script: /wianga/site/MoviePage.py`

尝试替换为:

^{pr2}$

编辑2:

尝试将此添加到get方法的顶部:

^{3}$

将输出放入一个beautifier(http://jsbeautifier.org/)以使其更具可读性,并查看REQUEST_方法、QUERY_STRING、HTTP_USER_AGENT、HTTP_COOKIE、PATH_INFO和HTTP_REFERER参数,以查看请求的实际来源。如果它们都来自你的浏览器,那么在你的html中有一些奇怪的东西,比如隐藏的iframe(你在使用channelapi吗?)。在

另外,试着去http://localhost:8080/_ah/admin/queues并确保没有任何旧任务。在

相关问题 更多 >