Hatena::ブログ(Diary)

satoru.netの自由帳 このページをアンテナに追加 RSSフィード

090521Thuday

[]google app engineのデータストアに日本語をいれるとき

db.Text(value, encoding="utf-8");

ってやればOKだった。

 from google.appengine.ext import db

 class HOGE_DB(db.Model):
  jtext = db.StringProperty();

 def main():
  dbo = HOGE_DB();
  db.jtext = db.Text(obj["author"], encoding="utf-8");
  db.put();
  print "ok";
 
 main();

090511Monday

[]TypeError: issubclass() arg 1 must be a class

google app engineで、ソースまるこぴぺなのに、

なぜか

TypeError: issubclass() arg 1 must be a class

ってエラーがでて困ってた。

原因は、pythonのバージョンによるもの。

The Development Environmentによれば、

if necessary, download and install Python 2.5 for your platform from the Python web site. 
Mac OS X 10.5 Leopard users already have Python 2.5 installed.

google app enginepyhton 2.5.4じゃないとエラーになっちゃうようだ。

090507Thuday

[]google app engineでLIMITを超えてみた

非モテSNS内で、mixiのecooのような、

twitterのよーなものを、google app engineを使って開発してみた。

使った言語はAjax + Flash + gae(python+mysql+memcached)。

f:id:satoru_net:20090507050106p:image

そんで、手抜き&googleを過信しすぎて

リクエストの度にSQLをたたくような↓みたいな処理をかいてたら、(言語はpython

def get :
   sql = 'SELECT * FROM hoge LIMIT 50';
   dbObj = db.GqlQuery(sql);
   ..

ディスク<帯域<CPUの順に制限が...の記事どおりの現象が発生。1日50万リクエストくらいでCPUオーバー。w

f:id:satoru_net:20090507040743p:image

規模としてはだいたい、約1日10万〜30万pv程度で、

会員数は20000人でopenPNEで動いてるサービス。

そんで、仕様をみなおして memcacached 化してみよーとおもって、

def get :
    dbs = [];
    if memcache.get( "db" ) is None:
     dbs = db.GqlQuery('SELECT * FROM hoge LIMIT 50');
     memcache.add(cache_key, dbs , 60*60*10);
    else :
     dbs = memcache.get( "db" )
    ...

まー、ざっくりだけどこんなかんじにしてみた。そーしたら、

いちおう、memcachedから呼んでくれてはいるんだけど、

なんかこれじゃーうまく 結果だけがキャッシュされず、

DBの処理を行ってその結果を出す」までの処理そのものが

キャッシュされてしまうみたいで、結果だけをうまく収納でけないよーだ。

その後、その結果をコネコネして出力するhtmlのみを

memcachedさせてみるよーなのにかえてみたところ

f:id:satoru_net:20090507041544p:image

どきゅーんとCPU負荷はさがりましたとさ。

まあ、あたりまえなんだけど、

google app engineでも割としっかりしないと

こんな事になっちゃうぞーっていう人柱レポでしたとさ。


ちなみに、あなたのopenPNEでも同じようなチャット機能実装したい!

とかって要望があればお問い合わせくださいな。

参考リンク

http://code.google.com/intl/ja/appengine/docs/python/memcache/

©satoru.net
Mail Twitter