Stickeraction moves to heroku

最近真的超忙的, 這篇拖了好幾個禮拜, 過年放假的最後幾天就該寫的說 … anyway …

前一陣子應邀 OSSF 電子報邀稿, 寫了一篇 Python/Django on Heroku 之後就把 twitthat 搬上了 heroku, 後來因為想說要省錢, 想說來把手上的 Linode 都關掉好了, 便把過氣的服務 stickeraction 給搬上了 heroku, 順便升級到 Django 1.3, 也多深入研究一下 Heoku。

其實我也不知道有沒有省到錢, 因為即便搬到 heroku 後, 還是因為資料庫限制, 所以開了一台 RDS ( reserved instance ) 來讓 twitthat, stickeraction, 以及新服務用, hmm … 算是用越多省越多吧? XD

目前 stickeraction 大概每秒是 30 個 requests, 搬上 heroku 後, 反應良好, 至於memcache 就用免費 5mb 的就夠了, 至少 newrelic 的 report 的分數都還是 excellent XD

相較於上次那篇 Python/Django on Heroku 的文章, 這次因為算是 deploy 正式的服務, 所以得深入玩一下, 所以就碰到了用 heroku config 做設定, 並且用上了 memcache, sendgrid, redis to go, stillalive 等服務。

其實上一篇文章最缺的就是 DEBUG 這個參數一定得關 XD 不過有點 tricky, 基本上我把 settings.py 裡 DEBUG 設定改成了下面這樣。

from os import environ env = lambda e, d: environ[e] if environ.has_key(e) else d  
DEBUG = bool(env('DJANGO_DEBUG', 'true'))  

然後用 heroku 指定 assign 一個空的字串給 DJANGO_DEBUG

$ heroku config:add DJANGO_DEBUG=''

這樣一來 deploy 到 heroku 的環境就會自定關閉 DEBUG。

因為 heroku config 可以設定環境變數, 所以便可以透過這一點讓 deploy 到正式環境的設定依照環境變數做自動設定, 另外不用把重要的資訊 commit 到版本控制系統裡。 特別像是 AWS 的 access key / secret key 這類的資訊。

AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID', '')  

另外就是, heroku 上面的第三方服務大多也都是透過環境變數讓你去讀取並使用, 其實這點還滿方便的 XD

Anyway, 總之 stickeraction 升級到 Django 1.3 順便換了一下 design, 放上 heroku 之後, 省了一筆每月 $29.9 的花費, 玩了很多東西, 只是有時會收到 AWS RDS 的 “MySQL server has gone away" 的訊息就是了 XD

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!