花了些工夫?qū)⑺槠W(wǎng)部署到了SAE,中途遇到各類問(wèn)題。感覺(jué)SAE看上去很美,實(shí)際上卻并不是太成熟(至少python版如此)。
下面記錄下我遇到的一些主要問(wèn)題以及解決方法。
django版本問(wèn)題
Django1.4都即將發(fā)布了,SAE平臺(tái)自帶的SAE版本依舊為1.2x。為使用django1.3版本,你需上傳自己的django。具體做法可參考SAE手冊(cè)中的runtime.html#virtualenv
日志模塊出錯(cuò)
最先遇到的是日至模塊的問(wèn)題。錯(cuò)誤顯示AdminEmailHandler中構(gòu)造某個(gè)類時(shí)帶了is_mail這個(gè)參數(shù),但目標(biāo)類的構(gòu)造函數(shù)根本就不支持。好在日至模塊不是必須。將日至處理模塊換成django.utils.log.NullHandler解決問(wèn)題。
'null': { 'level':'DEBUG', 'class':'django.utils.log.NullHandler', },
local_thread問(wèn)題
在index.wsgi中加入
import threading
from django.utils import _threading_local
threading.local = _threading_local.local
settings文件
SAE默認(rèn)安裝了不少python包,其中包括django-userena。糟糕的是SAE將django-userena的demo項(xiàng)目也加到了python路徑,而且加載的優(yōu)先級(jí)比項(xiàng)目代碼還高。直接導(dǎo)致os.environ[‘DJANGO_SETTINGS_MODULE'] = ‘settings'找到的是userena的settings文件。最終將settings文件改名為qnotes_settings.py解決該問(wèn)題。
其他問(wèn)題
??? 昨天部署上線后經(jīng)常出現(xiàn)數(shù)據(jù)庫(kù)錯(cuò)誤,錯(cuò)誤提示為Caught OperationalError while rendering: (1045, ‘a(chǎn)ccess deny')? 。SAE數(shù)據(jù)庫(kù)不支持長(zhǎng)連接,30s后主動(dòng)超時(shí)。但django本就會(huì)在每次請(qǐng)求后自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接,理論上不應(yīng)當(dāng)出現(xiàn)類似問(wèn)題。該問(wèn)題今天莫名其妙的自己好了。
??? 服務(wù)器非常不穩(wěn)定,經(jīng)常長(zhǎng)時(shí)間的無(wú)法訪問(wèn),不定期的可以正常訪問(wèn)。
??? SAE可能hack了python的包加載機(jī)制的原因,SAE的python包的加載行為有些奇怪。本應(yīng)當(dāng)最先加載當(dāng)前目錄下的包,實(shí)際上卻不一定。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

