說明:
(1)本人是python和web開發初學者,本文內容僅供新手交流經驗……其實我想說歡迎吐槽的
(2)我認為對於初學Python的同學來說SAE不算是很好用的一個環境,推薦通過安裝nginx 和 uWSGI 將web服務放在本地更適合新手的學習
1.1 申請試用SAE的Python服務
如,如果SAE帳號在建立應用介面的開發語言選項中看不到Python,那麼需要去這裡(http://www.douban.com/group/topic/24041553/ )申請。我申請後大概一天后就可以建立Python應用。
另外可以加入SAE-Python郵件清單 及豆瓣的SAE Python小組 和開發人員們交流。
1.2 建立第一個Python應用
在前一個步驟中申請成功的話就可以看到選擇開發語言介面多出Python這個選項,其餘的部分和建立一個SAE PHP應用是一樣的。
填好相關資料後開啟應用
在應用首頁點擊“代碼管理”,然後建立一個版本,系統會自動為你產生一個代碼架構:config.yaml 和 index.wsgi
這時候點開這個應用的連結,能看到網頁顯示“Welcome to SAE!”說明建立成功。
1.3 寫一個自己的Hello World
現在可以用SAE Editor(其實是個很不好用的東西)線上編輯代碼了。目前就只有兩個檔案,也就是剛才提到的 config.yaml 和 index.wsgi 。
暫時我們可以不用管 config.yaml , 來看看 index.wsgi
這個尾碼名為.wsgi的檔案其實就是python檔案。它首先引入了sae這個模組,然後在app函數中返回了一個http格式的內容,也就是你所看到的“Welcome to SAE!”。
最後由sae.create_wsgi_app把app轉換為適用於SAE環境的應用。(具體可參考官方文檔的“SAE Python環境”說明)
所以我們最後所看到的內容就是由這個app函數的傳回值所決定的。
我們來加一段代碼到app定義的前面,然後替換掉app函數的返回部分,現在代碼看起來應該是這樣的
import saedef hello(): return 'hello my python'def app(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/html; charset=utf-8')] start_response(status, response_headers) return hello() application = sae.create_wsgi_app(app)
這時候儲存,然後再訪問應用,你看到“hello my python”的話說明成功替換了原來的內容。
哈哈這個教程的第一課到這裡是不是要完了?
1.4 為什麼要這樣寫hello world?
實際上,直接替換app函數中的 return部分後面那段字串,也可以看到效果,所以這樣寫是不是多此一舉了?
先不急,我們來看看SAE都提供了哪些架構可以使用——官方文檔的“Quick Start”中列出了所有支援的架構及對應的快速開始模式。如果你學過Django、Web.py、Tornado之類的架構的用法,那麼這些對你來說應該沒什麼問題了。
——問題在於,不希望用架構的情形呢?
如果,你有耐心繼續看這篇我自己都受不了的“學習筆記”,請你把代碼改成下面這樣:
import saedef hello(): return 'hello my python' def hello2(): print 'hello 2' returndef app(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/html; charset=utf-8')] start_response(status, response_headers) hello2() return hello() application = sae.create_wsgi_app(app)
我添加了一個名為hello2的函數,執行了一個 print 語句。然後在app函數中調用hello2
現在運行吧。
結果你應該能想到,print語句的輸出肯定不會被列印在瀏覽器的介面中。但是這個hello2函數也被執行了。所以在SAE我們是看不到想命令列運行python那樣的print輸出,但是這不妨礙我們讓python做它該做的事,它還是支援引入各種模組,做各種強大的事——只是我們只能通過一個url來調用。所以當你訪問應用的url,實際上就是在執行app這個函數。
如果你自己定義了多個函數需要執行,那麼把他們全部放進app這個函數裡調用就行。
1.5 收尾
說了一大堆,最後還是建議各位選擇一個架構在SAE上進行開發,這樣上面的問題“為什麼寫這樣的hello world?” —— 當你的函數和對象開始變多,卻沒有架構來管理的時候,你需要建立一個(或者幾個)py檔案來存放這些代碼,然後自己再寫一些代碼來管理函數和對象的調用。這時候你就會發現,在這樣的情形下用web架構還是有協助的。
下面是幾個連結供參考:
(1)基於SAE的Python+Django的入門實踐
(2)SAE Python 開發人員手冊
===============================================
本文來自:http://blog.csdn.net/zh405123507
tags: Python SAE web.py wsgi