2014年2月26日水曜日

あとでよむ

あとでよむ」というAndroid向けアプリとWebサービスを提供しています。

GAEのバージョンアップを追いかけきれなくて、
と言われたまま長らく放置していたけれど、今日になって「最近同期ができない」というユーザさんからのクレームを3件もいただいたので、ちょっと調べてみました。
google.appengine.runtime.DeadlineExceededError が出ているのはMaster/Slaveだからか…。ちょっと仕事が落ち着いた?ので今のうちにえいやっとHRDにmigrateしようと思います。(2日に1回寝る生活から毎日寝る生活に戻ってきた)


Python2.7はHRD専用なので、まずはMaster/SlaveをHRDにmigrateしてからPython2.7化します。


HRD化

念のためサーバにある最新のソースをダウンロード ⇒ 手元にあるソースと同一でした(確認しただけ)
    appcfg.py download_app -A atode-yomu -V 1 server/

  1. Master/Slaveの旧アプリの管理画面で、Administration - Application Settings を開く。
  2. 下の方に Duplicate Application Settings というセクションがあって、New Application Identifier に atode-yomu-hrd と入っているのでそのまま Check Availability の確認をして [Duplicate Application ...]
  3. app.yaml を application: atode-yomu に書き換えて appcfg.py update 
  4. 2.の Duplicate Application Settings の上に Migrate Application というセクションがあるので [View Migration Tool...] ボタンをクリック
  5. Destination Application を atode-yomu-hrd にして、email受け取るチェックを入れたまま [Start Migration] !
  6. しばらくするとメールが来るので [Launch Incremental Copy] 開始
  7. Incremental Copy はすぐに終わってまたメールが来たので今後は [Acticate Read-only] 。表示が Waiting のまま Sync までいってないっぽくて Incremental Copy どうなったの?て感じで何度もやってみたけど進捗がないので。
  8. メールが来たのでHRDの新アプリの管理画面で軽く Data Viewer 使ってみて問題なさそうなので、Create Aliasセクションの [Finish Migration] をクリック!

移行するとKeyが変わるらしいけど ReferenceProperty 大丈夫なの? と思ったけど、どうやら自動的に変換してくれるもよう。ありがたや(-人-)
だったらもっと早くやっておけばよかったー←

英語の説明を一通り読んで、でも不安があるなーと思っていたけれど、こちらのブログがとても参考になりました。自分の理解が間違っていないことを確認できたというか(o'ヮ'o)


Python2.7化

  • app.yaml 書き換え
    • runtime: python27
    • threadsafe: true 追加
    • メインハンドラ /.* の指定をファイル名から WSGIApplicationインスタンス名に変更
  • メインスクリプト
    • __main__ のとき run_wsgi_app()する、、という実装を、グローバルに webapp2.WSGIApplicationインスタンスを置くだけに変更
  • その他
    • import django.utils.simplejson as json → import json

あっさりすんなりでした…(足かせはDatastoreがHRDでなかったことなので本体自体は別に問題なかった)


ここにきてやっと自分の端末に入っている「あとでよむ」アプリで動作確認…
やっぱり同期できないじゃん/(^o^)\
えー、あれー? GAE管理画面のログにも何も出てないよー?
あれ、もしかして atode.coffee-club.jp ドメインの中間サーバ(リバースプロキシ)が原因? → サーバ見に行く → ばっちりエラーログ出てたorz

元を正すと↓これ。
BINDの再帰問い合せをdisableにした → それまでは 127.0.0.1(localhost) をリゾルバに使っていたけれどさくらサーバのDNSを見に行くようになった → 再起動していないApacheが引き続き 127.0.0.1 に問い合せをなげてエラーしていた → エラーするからリバースプロキシできない という流れ。
Apacheを再起動したらすんなり同期できるようになりましたorz

まぁ…この機にHRD化できたし…結果オーライってことで(^^ゞ(作業的にはトータルで2〜3時間くらい?)

p.s. ついでにGAEのBillingも止めました。ひところより利用量減ってると思うし、HRDだからフリーの範疇でいけないかな…(せいぜい月1,000円とかだけど^^;)

0 件のコメント:

コメントを投稿