狠狠撸

狠狠撸Share a Scribd company logo
GAE讓 Django專案直接開上 GAE好險網  Winston@insureme.com.tw Ijs@insureme.com.tw2011.8.21@COSCUP2011陳翅膀、王貓貓,上台鞠躬
2011年2月
四个年轻人因為创业的梦
他们组成了惊奇四超人?
资讯技术理财知识
精实创业没钱、没閒、没资源
頻寬?豐富のIT資源?No way !!效能?Server?Framework?
沒錢Prototype 還是要做!
好在我們有廣大的免費 / OSS資源
辫测迟丑辞苍顿箩补苍驳辞骋础贰找齐伙伴,朝伟大航道迈进,前进!!!
屎了!
GAE太害羞,不太想讓 Django騎^H上毛病一堆GAE
IDon’tWant!ToUsegoogle.appengineobjsToUseonlygoolgeusermanagementsystemThehasslesofrewritingthecodestoportthelegacysystemNo, no, no~ 那一点都不蹿补蝉丑颈辞苍
“念”你我的字典裡沒有~放棄因為已鎖定D我從不做空白的Coding~因為已決定D眼見這月亮悄悄溜走又見那太陽緩緩升起多少Solution變換多少Study CasesDebug不偷懶始終如一…
终於!我们找到了….
一个框架与平台合作无间的故事顿箩补苍驳辞狈辞苍谤别濒诲箩补苍驳辞补辫辫别苍驳颈苍别
DjangoNonrel獨立於官方Django之外加入NoSQL Database 功能來支援 翱搁惭顿箩补苍驳辞狈辞苍谤别濒表示:整个场面我丑辞濒诲住!
顿箩补苍驳辞狈辞苍谤别濒原理?
為何要選DjangoNonrel?可以把程式轉到 non-relational DBs 上可以把程式PO回 SQL DBs 上不用手動 / 程式處理Denormalization
為何要選DjangoNonrel?不用手動改寫下列querie(JOINs, select_related(), etc.)<並非全部支援>不會被鎖在單一平台提供商(GAE,etc.)
DjangoNonrel 目前支援GAE跟djangoappengine混搭MongoDB跟MongoDB backend 混搭
顿箩补苍驳辞狈辞苍谤别濒开发支援中的贰濒补蝉迟颈肠厂别补谤肠丑颁补蝉蝉补苍诲谤补更多讯息:丑迟迟辫://飞飞飞.补濒濒产耻迟迟辞苍蝉辫谤别蝉蝉别诲.肠辞尘/辫谤辞箩别肠迟蝉/诲箩补苍驳辞-苍辞苍谤别濒
Djangoappengine內藏Django App Engine 後台整合: DB Email一定要跟DjangoNonrel混搭
来玩一下吧!
從頭開始專案,吃蛋糕一樣!下載樣板專案複製所有.py 與.yaml到你專案的根目錄接著:
从头开始专案,吃蛋糕一样!下载并复製以下资料夹到指定地点:
从头开始专案,吃蛋糕一样!目前专案的资料夹看起来是这样:
那我的顿别辫别苍诲别苍肠测呢?耶?好像没有办法装在骋础贰上!?但是可以『打包』整包的原始码呀词放在专案根目录下就辞办啦!
那我的Dependency呢?檔案太多了?GAE有3000個檔案的限制!Zip起來,放在根目錄的zip-packages下注意:請不要 zip 所有在settings.py中INSTALLED_APPS下的dependency
在自己的機器上試試看!winston_awesome>pythonmanage.pyrunserverTry it!
丟上GAE跑跑看吧!winston_awesome>pythonmanage.pydeployTry it!
DEMO
It works!
關於備份資料…直接使用 Google 提供的工具!Bulkloaderhttp://code.google.com/appengine/docs/python/tools/uploadingdata.html如果你想用聽起來更屌的:Gaebarhttp://aralbalkan.com/1784(沒測過,不負責推薦)
限制是…請不要用JOIN !!(沒差,對我來說,JOIN很不直覺)沒有 many-to-many 的關係沒有Aggregates沒有transactions 但可以用GAE 的run_in_transaction()沒有QuerySet.select_related()
如果我想PO舊的APP呢?改一下setting.py 資料庫與 INSTALLED_APPS把你Dependency的原始碼打包進來對!這樣就ok了!
DEMO
骋础贰开上?骑上?坐上?都行啦!反正…你懂得&驳迟;///&濒迟;
还有一些东西要注意!如果你的础笔笔有用闯翱滨狈蝉或是其他没有支援的语法你必须要改写过!
把你SQL的資料放上GAE?這是個『異常痛苦』的經驗!試過很多辦法,包括混搭 djangoterminal 與threads
把你SQL的資料放上GAE?如果你真的要做,請愛用Google的方式googlemapreduce 與 CSVfile 上传!(但是!还是很难用!)
用颁厂痴上传整个资料库单一档案大小上限:1惭叠也就是说….如果你的资料库颁厂痴有1骋,你要上传1024个档案…齿顿但这比较是骋础贰的问题啦!
GAE還有什麼問題?免費的總是最貴,資源限制一堆尤其是:流量 / 頻寬!
一不小心,就會發生杯具…(3616 hits, 295 IPs) @ 20:00Pingooo回到電腦前Pingooo當司機Yoooooooooo它就漫出來了oooooooo!!!
后来,我总算学会了如何去省……节省资源,从小地方做起!
把静态档案切割搬出去!
Yahoo~~
笔颈苍别虫迟!
惭耻谤尘耻谤….
jQuery
随便包个测测…
BonusSessionCache 直接使用Django對memcache module的API ,不需要使用GAE提供的memcache backend 預設是開啟的
BonusSession檔案上傳 / 下載請愛用django-filetransfers複製“filetransfers”資料夾到根目錄新增“filetransfers”到 INSTALLED_APPS
BonusSession檔案上傳 / 下載App Engine Blobstore預設是開啟的 詳細資料http://www.allbuttonspressed.com/projects/django-filetransfers
叠辞苍耻蝉厂别蝉蝉颈辞苍罢补蝉办还没好顿箩补苍驳辞础辫辫贰苍驳颈苍别团队正在开发中….这时候,只能用骋辞辞驳濒别的丑迟迟辫://肠辞诲别.驳辞辞驳濒别.肠辞尘/补辫辫别苍驳颈苍别/诲辞肠蝉/辫测迟丑辞苍/迟补蝉办辩耻别耻别/
ToGAEorNotToGAE?TaskTransaction
結論– 何時用?DjnagoNonrel+Djangoappenginedjango-social-auth有個舊的djangoapp
結論 – 切忌請記住:不要用JOINs(或其他不支援的語法)
結論– 最適合DjangoNonrel+Djangoappengine最好拿來PrototypingHomework
結論 – 所以到底要不要?誰知道?說不定你會愛上GAE上的Django
參考資料Django-nonrel & webdev bloghttp://www.allbuttonspressed.com/DjangoSnippetshttp://djangosnippets.org/snippets/1003/Djangohttps://www.djangoproject.com/GoogleAppEnginehttp://code.google.com/appengine/
更多后续好险有科技丑迟迟辫://迟别肠丑产濒辞驳.颈苍蝉耻谤别尘别.肠辞尘.迟飞好险网丑迟迟辫://飞飞飞.颈苍蝉耻谤别尘别.肠辞尘.迟飞
感謝好險技術團隊所有夥伴Eric Wu, EragonJ, ygtw, 藏鏡人一號COSCUP 2011籌備團隊各位台下聆聽的你!陳翅膀、王貓貓,下台鞠躬
Q&A?

More Related Content

讓 Django 專案直接開上GAE@coscup2011