2011-03-11 67 views
1

我在appengine中有小應用程序。每個請求都會在本地開發服務器中訪問兩次服務器。
在調試模式下,我可以看到得到方法調用兩次。
它發生在Chrome和Firefox瀏覽器。 這裏是從我的LocalServer日誌..每次請求在Appengine中點擊兩次服務器

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 - 

更新:它越來越差,我cheked在應用console.There日誌它命中的3倍以上的要求。

handlers: 
- url: /favicon.ico 
    static_files: static/img/favicon.ico 
    upload: static/img/favicon.ico 
- url: /robots.txt 
    static_files: static/robots.txt 
    upload: static/robots.txt 
- url: /img 
    static_dir: static/img 
- url: /images 
    static_dir: static/images 
- url: /css 
    static_dir: static/css 
- url: /js 
    static_dir: static/js 
- url: /image/.* 
    script: /wianga/pages/common/ImageController.py 
- url: /task/.* 
    script: /wianga/pages/task/TaskController.py 
- url: /browse/.* 
    script: /wianga/site/Browse.py 
- url: /movie/(.*)/rating-review-video/ 
    script: /wianga/site/MoviePage.py 
- url: /movie/(.*)/rating-review-video 
    script: /wianga/site/MoviePage.py 
- url: /404 
    script: /wianga/404/404.py 
- url: /api/.* 
    script: /wianga/api/ApiController.py 
- url: /.* 
    script: /wianga/site/Home.py 

正在逐漸從AppEngine上turorial hellowrld應用相同的行爲...... 的app.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 - 
+0

您是否檢查過此模式是否重複了除AppEngine服務器之外的其他頁面?我很難相信AppEngine dev服務器會引起這個問題。 – 2011-03-11 19:48:57

+0

@Adam Crossland在chrome和firefox(使用螢火蟲)中,請求只進行一次。但服務器觸發「def get(self):」方法兩次。如果你想要我的代碼和app.yaml ..我會在這裏發佈它。 – Natsabari 2011-03-11 20:05:16

+0

日誌中的GETS似乎表明有東西正在向該URL發出http請求。 cron作業或taskqueue任務可能使用該URL嗎?如果您的通配符處理程序位於您的app.yaml中的taskqueue處理程序之上,則可能會發生這種情況。另外,你在做什麼在jquery,或div/iframe可能再次請求該URL? – Calvin 2011-03-12 04:33:43

回答

3

當我建立我的app.yaml時,我只是傾注了這個頁面:http://code.google.com/appengine/docs/python/config/appconfig.html 您必須像正則表達式解析器那樣思考。任何不符合前面的表達式的東西都會落入你的通配符處理器,並導致奇怪。

我注意到的一件事是您應該將login: admin添加到您的任務隊列處理程序。這將防止外部請求意外觸碰該URL。另外,當你向你的處理程序提交任務時,如果你不包括尾部斜線(/task?blah=something而不是/task/?blah=something),那麼請求將落入你的通配符處理程序併發送到Home.py.這也可能發生在/image/,/browse//api/。您應該將日誌記錄調用放入這些處理程序中,以確保它們在預期時得到調用。

雖然在app.yaml中顯然沒有出現明顯的錯誤,但我並沒有跳出來。但是,由於您的日誌中顯示了GET,這表明某些內容正在請求該URL,並且這不僅僅是在內部調用兩次的方法。

編輯:在秒

保留,只注意到你在app.yaml中有這樣的兩倍。你不應該這樣做。

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

嘗試更換:

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

EDIT2:

嘗試添加以下內容到get方法的頂部:

logging.info('environ: ' + str(self.request._environ)) 

彈出輸出爲美化(http://jsbeautifier.org/ )使其更具可讀性,並查看REQUEST_METHOD,QU ERY_STRING,HTTP_USER_AGENT,HTTP_COOKIE,PATH_INFO和HTTP_REFERER參數來查看請求實際來自哪裏。如果它們全都來自您的瀏覽器,那麼您的html中就有一些奇怪的東西,比如隱藏的iframe(您是否在使用Channel API?)。

此外,請嘗試去http://localhost:8080/_ah/admin/queues,並確保沒有任何舊任務掛起。

+0

感謝您的reply.i試圖運行應用程序引擎教程中給出的helloworld示例..在那也得到相同的行爲。我昨天升級我的appengine到1.4.2 ..將這導致這個問題..我更新了我的問題與helloword應用程序配置和它的日誌。 – Natsabari 2011-03-12 06:12:37

+0

我也運行1.4.2,並沒有表現出這種行爲。 – Calvin 2011-03-12 06:18:01

+0

來自firefox的請求在log.log中提供兩個條目。從chrome中的四個條目將重新安裝1.4.2並再次嘗試... – Natsabari 2011-03-12 06:21:48