GoogleAppEngine

Python3.7+Django2.1のアプリケーションをGoogleAppEngine/Standard環境にデプロイする

GoogleAppEngineのStandard環境でPython3.7のランタイムがベータ版で利用できるようになったので、試していました。 ドキュメントにはFlaskアプリケーションをデプロイする手順が記載されていましたが、Djangoアプリケーションだと少し設定が追加で必要だっ…

GoogleAppEngineとGoogleCloudPlatformの知識アップデート2017/05

3年ぐらいGoogleAppEngine (GAE)を使っていなかったのですが、GCPの無料枠も増えてるみたいだし久しぶりに触ってみようと思って調べていました。 以下、GAEとGCP周辺の知識のアップデートなメモ書き。 GoogleCloudPlatform (GCP) cloud.google.com Googleが…

Google App EngineのPython SDKをDockerで動かしてみた

GoogleAppEngineを久々に使おうとしたらいろいろ変わっていて戸惑いまくり。 静的ページをホストしてるだけのプロジェクトで更新をしたかったので、SDKのインストールが必要なんですが、毎回面倒なのでDockerで少し楽できないかと、ゴニョゴニョしてました。…

GoogleAppEngine/Pythonでparamikoを使ってSSH接続

GoogleAppEngineでsocketが使えるようになったのは1年ぐらい前だった気がしますが、使ったことなかったので試してました。 Sockets Python API Overview | Python | Google Cloud Platform まだプレビューリリースですね。 socketを使えるのならparamikoでSS…

GoogleAppEngine/PythonからGoogleCloudStorageを使う

AppEngineで動かすアプリを作っていて、Blobstoreを使おうかなーと思って久しぶりにドキュメントを見たら、CloudStorageを使うことが推奨されていたので、試してた。 https://developers.google.com/appengine/docs/python/googlecloudstorageclient/?hl=ja …

AppEngine上で動かしているアプリをMaster/Slave DatastoreからHRDへ移行してみた

GoogleAppEngineのDatastoreサービス(データベース)は昔はMaster/Slaveという方式だったけど、これはもう非推奨になっていて、今はHigh Replication Datastore(HRD)へ移行するようにアナウンスが出されている。 で、移行ツールが提供されているので、今さら…

GoogleAppEngine(PythonSDK)のndb雑感

GoogleAppEngineで動かす予定の、ちょっとしたデータベースアプリケーション(簡単なCRUD)を作るのにgoogle.appengine.ext.ndbを試しに使ってみてます。 少し使ってみて感じたことなど。 dbと比べて、APIの設計がよりDataStoreを効率よく使う方に向いてる(get…

appengine ja night #21で採用事例の紹介をしました

appengine ja night #21 でGoogleAppEngineの採用事例として、 Cotto (リンク先は音が鳴るので注意) というサービスの紹介をしました。 プレゼンテーション資料はSlideShareにアップロードしてあります。 写真共有アプリのバックエンドサーバー 事例の紹介に…

GoogleAppEngineのBackendsについてメモ

仕事で使うことがあったけど、忘れそうなのでメモ。 AppEngineのバックエンドインスタンス(Backends)について。 Backends Python API Overview | Python | Google Cloud Platform ここではdynamicインスタンス、フロントエンドと同じコードをデプロイする前…

tokky.appengine.coreを更新

仕事で使ってみたりしてたものからフィードバックを取り込み。 Python2.7前提にしてドキュメントも更新した。 tokibito / tokky.appengine.core — Bitbucket tokky.appengine.core ドキュメント — tokky.appengine.core 0.1dev documentation

AppEngineとPILはまりどころメモ

AppEngineのpython27ランタイムではPILを使うことができる。開発時のはまりどころをメモしておく。 PILはパッケージ周りの問題があってimportでコケる話は割とよく聞く。 try: from PIL import Image # (1) except ImportError: import Image # (2) PILをイ…

hoge.appspot.comいじり

スパム投稿がひどかったので、hoge.appspot.comの内容を差し替え。 http://hoge.appspot.com/ Sphinxでビルドしたhtmlを置くことにしました。 APPIDがhogeだしexample的なコンテンツでも置いていければいいなー。

GoogleAppEngineを採用するプロジェクトの難易度

GoogleAppEngineは全体的に速度は遅いので、アプリケーションのチューニングは必要になる。 インフラ側を触れない(多少の設定はあるが)からアプリケーションコードでがんばらないといけない。 インフラを触れるなら、構成要素の各種ソフトウェアの設定を変更…

testbedを使ってテストコードを書く

AppEngineではtestbedモジュールがテスト用のAPIスタブを用意してくれる。 Local Unit Testing for Python | Python | Google Cloud Platform unittestのsetUpとかで使うといいらしい。 import unittest class TestBedTestCase(unittest.TestCase): def _set…

webappベースの簡単なフレームワークを作ってみた

主に自分用。 AppEngineを使うことが増えてきてるのだけど、素のwebappじゃちょっと微妙だけど大きめのフレームワークまではいらないかなーってときに使う。 tokky.appengine.core ドキュメント — tokky.appengine.core 0.1dev documentation ファイル構成に…

GoogleAppEngineのアプリケーション内で使うDjangoのバージョンを1.2に指定する

表題の通り。メモ。 AppEngineのSDKは、これを書いてる現在はDjangoの0.96がカレントバージョンで、SDK内部にはDjango 1.2も含まれている。 1.2に切り替える場合はアプリケーションのディレクトリに appengine_config.py を作成して1行書く。 webapp_django_…

webappでdjangoのフォームを使うときにエラーメッセージを日本語にする

AppEngineのwebappでdjangoのフォームを使うと、settings.LANGUAGE_CODEがen-usなのでエラーメッセージが英語になって残念ですよね。 その解決方法など。 main.py 単純なテンプレートでフォームを表示してis_validするだけのコード。 import os from google.…

Google App EngineのアプリケーションにBasic認証を設定する

最近仕事で Google App Engine を使う機会が増えてきてて、今更ながらまともに使い始めました(公開初日から触ってたのになー 作りかけのアプリケーションで、とりあえずアップロードするけど、公開までは全体にBasic認証かけときたいなーなどということが多…

appengine ja night #13のスライド

もう2ヶ月も経ってしまってるけど、ajn#13で使ったスライドをslideshareにアップした。 appengine ja night #13 : ATND mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ View more presentations from tokibito

モジュールの遅延ロードについて

AppEngineでスピンアップが遅くなり過ぎないようにとか考えると、Pythonでもモジュールの遅延ロードをしないといけないわけで、まあ書く。 app.yaml この例ではすべてのリクエストをmain.pyで受ける。 application: nullpobug-sandbox version: 1 runtime: p…

ホームページをAppEngineに移した

コンテンツをいくらか削って、ホームページをDjangoからAppEngineに載せ変えました。 http://www.nullpobug.com/ もちろんPython版です。ドメインの設定が面倒だったので、slicehost上のnginxからリバースプロキシしてます。 自前で小さなフレームワークを作…

sys.pathに不要なパスを追加するとスピンアップが遅くなる?

メモ。Pythonのモジュールのロードはsys.pathの順番で探しに行くから、アプリケーション側でsys.path[0]なんかに意味のないパスを追加すると、毎回モジュールロード時に追加したパスも参照されているのか、ロード時間が増えた(小さなアプリで300msぐらい)。 …

AppEngineとbpmappersでJSON形式のデータを返すAPIを作る

アドベントカレンダーにコッソリ登録したつもりだったのに、 id:kuenishi から翌日に指名されてしまった @tokibito です。 今日はAppEngineで書きます。最近仕事でも少し触ってます。 他の人みたいにボリュームたっぷりの記事は書けないので軽めに。 モデル…

AppEngineのVMの挙動メモ

app.yamlのscriptに指定したスクリプトはmain()がない限り毎回実行される。 importしたモジュールはmain()の有り無しに関係なくロード済みになる。(mainがなくてもVMは終了しないで再利用される)

DeadlineExceededErrorはBaseExceptionを継承している

メモ。appengineのDeadlineExceededErrorはBaseExceptionを継承しているのでExceptionで受けれない。 むしろAppEngineなら、指定なしのexceptは絶対に使わずに "except Exception" を使うようにして、エントリポイントのmain()でDeadlineExceededErrorを受け…

いわゆるホームページスペースとしてのGoogleAppEngine

既出ですが、GoogleAppEngineは静的なコンテンツを置けるので、簡単なPythonCGI+静的HTMLのサイトで十分な場合にも便利ですよね。 例えば会社のホームページとか。 無料〜で使えるし、アクセス増えてもサーバ落ちないし、ホームページスペースとしては優秀な…

Google App Engineプログラミング入門が発売されてます

Google App Engineプログラミング入門という本が発売されてます。私も執筆に参加しました。 Kayフレームワークの入門にもなっているので、GAEでPythonを使ってみたいという人にはおすすめです。Google App Engineプログラミング入門作者: 中居良介,岡野真也,…

rst2pdf.netというサービスを作りました

reStructuredTextからPDFファイルを生成するツールにrst2pdfというものがありますが、インストールとか設定でたまにはまる。もっと手軽にPDF作りたいなーってことでAppEngineに乗っけてみました。 URL http://www.rst2pdf.net/ https://rst2pdf-net.appspot.…

deferredでタスクキュー

ちょっと作りたいものがあって、 AppEngine のプラットホームにマッチしそうな感じなので tmatsuo さんのKayでごにょごにょやってます。 タスクキュー使うのにdeferrdが楽チン便利。 from google.appengine.ext import deferred def some_task(message): # …

app-engine-patchすごいよ

Google Code Archive - Long-term storage for Google Code Project Hosting. なんかレビューを待ってる人がいるとか、いないとか。あんまり使い込んでみてはないけどとりあえず紹介。 これを使うことで何が嬉しいか GAEのDjangoで使えなかった以下のものが…