BAE Python Django應用調試記錄

    鑑於bae與sae是國內少有的app engine. 且bae又後來居上、可用git版本管理,因而試用此平臺掛一個測試Python Django應用。
    但百度雲的Python文檔還真是少的可憐,又沒怎麼維護,都讓我懷疑到底這貨百度要不要了。文檔傳送門bae支持Django 1.4版本,主流是1.5,將就着用。
     http://901314.duapp.com/就是拙做,頁面中惟一的超連接hello的實現方式是調用Django中的一個app。依着簡陋的文檔修修補補push兩回後,超連接hello竟然是404錯誤,頓時亂了手腳。這麼簡單的測試也出錯,但bae又不給調試信息,因而亂七八糟的搞了一會仍是沒見效。最後想一想,多是git上傳了.pyc字節碼文件搗亂,刪除bae上的全部代碼,從新push一份乾淨的demo,終於hello連接能夠跳轉了,記錄慶祝下,SE來爬個人網頁吧哈哈。之後試試動態生成內容。
    示例源碼http://git.oschina.net/397667796/bae_django,來fork吧。
php

    ps: bae好像也會出調試信息,把調試打開,訪問不存在的地址http://901314.duapp.com/hellos,出現下面與本地同樣的debug信息,那爲何以前超連接出問題不出debug信息呢?==! html

Page not found (404)

Request Method:	GET
Request URL:	http://901314.duapp.com/hellos
Using the URLconf defined in bae_django.urls, Django tried these URL patterns, in this order:

^$ [name='home']
^hello/$ [name='hello']
The current URL, hellos, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

2013.07.10 更新:
    源代碼增長BAE版本1,測試調用非默認的Django 1.4庫,而是調用應用目錄下的Django 1.5.1庫,測試成功。參考http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/python/faq。但總共幾M的git包,竟push到BAE失敗,提示以下。哪位知道如何解決的,多謝回覆。
python

Counting objects: 4592, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2499/2499), done.
efrror: RPC failed; result=22, HTTP code = 411| 1.23 MiB/s
Watal: The remote end hung up unexpectedly
Writing objects: 100% (4588/4588), 3.04 MiB | 957 KiB/s, done.
Total 4588 (delta 1209), reused 1 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date

2013.07.11 更新:
    今天折騰半天,終於弄清「超連接hello竟然是404錯誤」的緣由,在於app.conf文件,出現錯誤的靜態資源文件配置以下。
    (2013.07.11晚更新:此配置是對未使用Django框架,全部路由由app.conf處理,不管是目錄(/)、靜態文件(/static/$1)、仍是(動態腳本)):

git

handlers:
  - url : /
    script: index.py
  - url : /(.*).py
    script: $1.py
  - url : /static/(.*)
    script: /static/$1
  - expire : .jpg modify 10 years
  - expire : .swf modify 10 years
  - expire : .png modify 10 years
  - expire : .gif modify 10 years
  - expire : .JPG modify 10 years
  - expire : .ico modify 10 years
     而正確的配置文件是下面這樣的,區別在於對index.py的映射路徑。
    (2013.07.11晚更新:些時因app.conf與Django的urls.py一塊兒接管路由,雖未完全瞭解他們的協做,但暫時的理解是app.conf位於處理流水線的第一位,且依其文件內路由的順序執行。如((/.*)表明全部網址除位於以前過濾過的)路由全由index.py處理,而index.py是BAE上應用的入口,(/.*)地址的具體內容以後再交由Django的urls.py處理,這樣二者的定位就清楚了。下面app.conf的配置中,把/static/(.*)放在前面是由於項目在發佈時,通常把全部的靜態文件從項目中的apps聚集放在/static/目錄下,統一在Python代碼以前由app.conf接管靜態文件的路由, 其中一個目的應該就是爲提升效率。參考BAE路由配置http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/manage/conf 與 SAEhttp://python.sinaapp.com/doc/quickstart.html 及始祖Googlehttps://developers.google.com/appengine/docs/python/config/appconfig?hl=zh-cn

handlers:
   - url : /static/(.*)
     script : /static/$1
   - url : /.*
     script : index.py 
   - expire : .jpg modify 10 years
   - expire : .swf modify 10 years
   - expire : .png modify 10 years
   - expire : .gif modify 10 years
   - expire : .JPG modify 10 years
   - expire : .ico modify 10 years
     坐等大神們幫忙解釋。
    再PS: 從BAE的目錄發現,其竟然用新浪的codefs代碼部署工具。
相關文章
相關標籤/搜索