LoginSignup
18
11

More than 5 years have passed since last update.

GAE/SE Pythonランタイムアップデートへの道

Last updated at Posted at 2018-12-01

社内でGAE/SEのpy27(SEの1gen)のサービスが多くあり、py37(SE 2gen)への移行のために、軽いノリで整理した記事を書いたので、qiita用に整理し直しました。

少し古い情報や間違いもあるかもしれないので、ご指摘いただければと思います。

Python2.7は2020年1月に死亡

https://pythonclock.org/
スクリーンショット 2018-11-19 14.12.19.png

それまでに移行する必要があります。

python2からpython3へのアップデート!

AppEngine SDKやpython2.7に依存した人の移行案

基本的にAppEngine SDKは完全廃止です :dizzy_face:
もう google.appengine パッケージとは別れを告げよう! :hand_splayed:
代替サービスが無い・開発される予定のないものを使っている人は、一緒に辛い道のりを歩もう! :runner:

公式の違い解説: Understanding differences between Python 2 and Python 3 on the App Engine standard environment

SE 2nd genには、1st genと比べて、

  • プロプライエタリな仕様からの脱却
    • AppEngine専用SDKの廃止
    • 動く環境もGAEの内側でなく、外と同じ感じになる?
    • 自由だけど飼い慣らされた環境じゃない
  • 環境依存の脱却
    • 普通のDockerぽくなる。(gVisor?)
    • テスト等も共通化できる

のような特徴があると感じました。

TaskQueueのPush Queueで非同期処理 :two_men_holding_hands:

Cloud Tasks, AppEngine Queueがβです!

  • 有料化したけど、無料範囲が十分大きいので安心! :heart_eyes:
  • Pull Queueの場合やGAEのサービス間通信の場合はpub/subなども使えます。

App Engine Cronで定期実行 :school:

Cloud Schedulerがbeta中

  • 有料化 :money_with_wings: されましたが、だいぶ安いので問題なさそうです。
  • まだβなのでバグはある?

Memcache最高 :pencil:

  • 廃止? :cross:
    • 検討中ではある?: Stay tuned for updates as we're continuing to look into opening up Memcache to the rest of GCP.
  • ないと困る場合はCloud Memorystore(Redis)に課金すべき?
    • GAEからアクセスできないらしい。

login: admin で管理画面 :police_car:

廃止予定 :skull_crossbones:

Mail APIでお手軽にメール送るっしょ :postbox:

廃止 :mailbox_closed:

  • SendGrid, Mailgun, Mailjet等を使いましょう。

Datastoreのpython用ラッパーndbを使っていた :snake:

  • 移行検討・開発中 :thinking:
    • コメント: We're currently actively exploring bringing ndb to Python 3. Note that this would be close to, but not 100%, API-compatible but would bring the magic of a good ORM to Datastore.
  • 待てないならGoogle Cloud Python client libraries を使うのが早い。

画像キャッシュ最強のImages API :framed_picture:

廃止 :confounded:

  • 自分でGCSとPillowで頑張る

Search APIで検索システム作ってた :microscope:

検討中、おそらく廃止? :cold_sweat:

  • GCEにElasticsearchたてる?

dev_appserver.pyのDatastoreエミュレータでテストしていた :construction_worker:

廃止 :angel:

  • Cloud Datastore Emulatorを起動するタイプにして書き直しましょう。
  • もしくはモック。

GAE/SEのLogはやっぱ見やすくて最高 :see_no_evil:

そのままLoggingしても勝手にまとめてくれません! :thermometer_face:

自分で集めるようにしましょう。。

その他廃止 :rhinoceros:

個人的に使っていないものですが、使っていた方は注意してください。

  • Blobstore
    • バイナリが保存できるやつ
    • そもそもGCSに移行していると思います。。
  • Capabilities
  • Modules API
    • AppEngineのサービス(旧モジュール)を取得するAPI。
    • 複数サービスで同じコードを使ってたり、自サービスや他サービスと連携する場合は使っていた?
    • AppEngine Admin APIや環境変数で対応可。
  • URL Fetch
    • 特に気にせず普通にアクセスできるようになる。
    • Requestsでいい。
  • appcfg.py
    • そもそも現時点でも非推奨になって久しいので気にしなくていい?。

いいところもいっぱいあるので頑張ろう! :muscle:

  • Third partyライブラリが完全に使える
    • C Nativeなライブラリでも自由自在! scikit-learn等も!
      • メモリとかマシンリソースは制限あるけど。。
      • 無料枠がある! :pray:
  • Fileアクセス可能!
  • バックグラウンドスレッドでも殺されない!
    • 今までもできたはできたけど。。
  • Cloud Client Library使える!
    • 今までも使えたけどAppEngine SDKとぶつかって面倒だった。
  • dev_appserver.pyは引き続き使える!
    • ただし、使うにはpython2が必要 (そのうち解消するはず。。)

その他参考

18
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11