GAE

今日1時間悩んだ問題

GAE

問題を経過時間で絞り込んで易しい問題、難しい問題、と分類しようとか思った easy = Question.all().order("elapse").filter("elapse >", 5).fetch(10) normal = Question.all().order("elapse").filter("elapse >", 15).fetch(14) hard = Question.all().o…

GAEでPagination

GAE

fetchの制限があるからどうやってpaginationを実装するのがスマートかなーと思ってたらまさにズバリな内容の文章が公式であった。App Engine でページングを行う方法 - Google App Engine - Google Codeシャードって何だカウンタのシャーディング - Google A…

マシンを再起動したら開発サーバのデータが消えた件

GAE

あ、ここに書かれているのと同じ挙動かも。 http://d.hatena.ne.jp/naskin/20100219/1266584289 データを保存する場所を変えればいいのか。

Google App EngineでListPropertyを使うときに見落としがちなこと

GAE

Dashboardで編集できなくて悲しい。

bulkupdateを使う

GAE

http://github.com/arachnid/bulkupdateとりあえず手順通りに試してみよう、と思ったら handlers: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/handler.py login: adminこれがkay-framework(http://code.google.com/p/ka…

AttributeError: 'FooBar' object has no attribute '_entity'

GAE

(注: このエントリーは間違った内容を含んでそうな気配がします。)Google App Engineでsaveしようとしたときに「AttributeError: 'FooBar' object has no attribute '_entity' 」というエラーがでてしまった件:モデルで class FooBar(db.Model): short_key =…

ReferenceProperty failed to be resolved

GAE

app-engine-patchのadmin画面にアクセスするとこういうエラーが出るので File "/.../admin/templatetags/admin_list.py", line 179, in items_for_result field_val = getattr(result, f.attname) File "/base/python_lib/versions/1/google/appengine/ext/d…

app-engine-patchで作ったのをローカルのDjangoに移植しようとしてTemplateDoesNotExist

GAE

まずこのエラーになるまえにこれは済んでるはず - from ragendja.template import render_to_response + from django.shortcuts import render_to_response TemplateDoesNotExist at / ,... と大量のメッセージが表示される ragendja.template.render_to_res…

マトリクス牧場の負荷、続編

GAE

だいぶ長いこと「毎秒数回」のアクセスがあったけど、そろそろ収束してきたみたい。 CPU1個では足りない負荷がかかってたのはわずかな時間のようだ。これの10倍までの負荷が毎日かかっても無償の範囲内で耐えられる。前に最中限オンラインを作ったときに頻繁…

マトリクス牧場の負荷

gae

大したことないサービスなのに4%も食ってるなー。Matrix:Itemが1:nで、Item:Positionが1:mだから、1枚のマトリクスを表示するのにO(mn)のクエリが発生するんだよな。そこが問題点かな。Positionの平均をキャッシュさせたらいいんだな。memcachedに「Item.id …

key_nameメモ

GAE

Foo(key_name=...)でキーの名前を指定できる foo.key_nameになってるかと思いきやfoo.key().name()だった Foo.get_by_key_name(...)でその「キーの名前」でアクセスできる key_nameがコンフリクトしたら例外とか飛ぶのかなーと思ったけど飛ばなかった。 試し…

app-engine-patchを使うときにmyappはどうする?って話

GAE

Django Hack-a-thonで聞かれて口頭で答えたのを今思い出したので書いておく。僕はsettings.pyのINSTALLED_APPSの設定の後にこう書いてる。 IS_LOCAL = os.environ.get('SERVER_SOFTWARE', '').startswith('Dev') if not IS_LOCAL: INSTALLED_APPS.remove("my…

自分用のテンプレート作成スクリプトを作った

GAE

細々したウェブアプリを作るのにわざわざ10個しかないGoogle App Engineのアプリケーション枠を使うのはもったいない。app-engine-patchを使っているので./manage.py startapp fooで作れば、一つのアプリケーション枠でいくつも動かせるし、独立したアプリに…

連番整数IDを振るのに挫折した

GAE

まずこんなデコレータを作って def synchronized(func): def synchronized_func(*args, **kw): return db.run_in_transaction(func, *args, **kw) return synchronized_func つぎにこんなファクトリーを作った。 @synchronized def make_instance(cls, *args…

URLは500文字を超えるがどうしよう

GAE

Google App Engineの話。URLはIEでさえ最長2083文字まで受け付けるので、500文字が上限のStringPropertyに入れるわけにはいかない。 class StringProperty(verbose_name=None, multiline=False, ...) A short string property. Takes a Python str or unicod…

app-engine-patchを使ってみる

GAE

Django on Google App Engineでちょこちょこ開発しているけども、やっぱりDjangoなのにあのきれいなadmin画面が使えないのではDjango人生の80%くらいを損していると思うのでid:voluntasにすすめられたapp-engine-patchを使ってみる。http://code.google.com/…

nishiohirokazu.appspot.com

GAE

細々したサービスを入れるためにGoogle App Engineでnishiohirokazu.appspot.comを取ろうとしたら、誰かに既に取られていた。誰ですか。どう考えても身内だと思うのですがー(笑) - http://twitter.com/KeiyaKanno/status/1002187071 アカウント名のアプリは…

offsetは1000を越えられない

GAE

むう、Google App Engineをやめて引っ越すためにデータを適当な形式にしてダウンロードしようと思ったんだけど、全体を一度にやろうとすると例のごとくDataStoreのタイムアウトになり、fetchのoffset引数で「1100番目から100個」みたいに取ろうとするとoffse…

Google App EngineでDjangoのtemplatetagsを使うには

GAE

templatetagsで何が出来るかわからない人のために1行で解説すると、{{ hoge|my_filter }}でhogeを引数にしてmy_filterっていう自作の関数が呼べるんだ!(他にも色々出来るけど)カスタムフィルタなしで、例えばカード番号(整数)からカード画像のimgタグを作っ…

Google App EngineでTimeout

GAE

Exception Type: Timeout Exception Value: Exception Location: /base/python_lib/versions/1/google/appengine/api/datastore.py in _ToDatastoreError, line 1627 データストアへのアクセスに時間がかかり過ぎと言われても。。。普段は問題なく動いていて…