SAE-Python教程(一) 在SAE上進行Python的開發

來源:互聯網
上載者:User

說明:

(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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.