2010年8月27日 星期五

memcached in goristock

這幾天在偷偷做另外一個小東西時,用到 GAE 的 memcache API, 看資料發現 memcache API 是利用 memcached 模組修改而來。接下來就搜尋找到一系列文章提到 memcached 的應用,像是「{|ihower.tw| blog } | 如何使用 memcached 做快取」這篇除了提到應用外,還有提到 key 命名的問題。

不過我是想把快取的機制用在 goristock 中,goristock 在取股票資料的時候都必須連到證交所,有的時候不會只查詢一次,重複抓取沒有效率。另外 timeser.py 有一個 overall(),是跑整個上市股票的資料來分析買賣點的功能,可是這功能每次都要跑很久,每一檔股票都要再下載一次盤後交易資料,所以變得非常冗長又沒有效率。因此新開一個 branch 來實作這個功能,另外這 branch 是為離線版本來開發。
  • 首先先安裝 memcached
    sudo apt-get install memcached
  • 之後安裝 python-memcache
    sudo apt-get install python-memcache
memcached 可以設定一些細節,不過我這裡沒有做,單純的使用預設的設定。timeser.py 使用 goristock.py 的 class,所以修改了 goristock.__init__() 部份。


在 timeser.py 加入 preoverall() 來預載資料。


之後來跑 timeser.overall() 就飛快,抽換不同的分析條件就不用在重抓一次資料。


開發離線版本除了目前加入 memcache 外,還有一個方向就是把資料儲存下來,不過這方面還在參考其他高手處理的方式,再慢慢實作加入。不過現在還是努力寫一下論文好了,老闆在追趕了!

沒有留言 :

張貼留言