Google App Engine for Python 4アプ目
あえて抜けしてるんだろうけど
無料枠があるのも魅力の一つ
953 :
nobodyさん:2013/01/13(日) 01:16:59.55 ID:Y3d4fqdG
2012年のGoogle IOで
versionごとにサーバーの設定ができるようにしたいって言ってたけど、
あれから進展あんのかな?
GoogleAppsも新規無料枠無くなったしな
GAEがそうなるのも時間の問題
涙拭けよAWS厨
誰かスレッドセーフについて教えてください
2.7以降に単一のインスタンスがスレッドを捌けるようになった
その恩恵を受けるにはapp.yamlにthreadsafe: trueを指定
そしてthreadingモジュールも使えるようになったので
それを使ってスレッドを制御しなさい
こんな認識でいるんですがGAEから本格的なプログラミング始めたばかりで
スレッドセーフとは何なのかはっきりつかめていません
例えばwebappとdbを使って一般的なアプリケーションを書くとして
どういう箇所が非スレッドセーフになりうるんでしょうか
ぼんやりした理解としてはmutableなオブジェクトが
グローバルやクラスに存在すると駄目?程度です
ヒントだけでも構いませんのでお願いします
957 :
nobodyさん:2013/01/17(木) 13:29:53.64 ID:EsHQfGhD
俺も知りたい
え、マルチスレッドって自動対応じゃないの?
threadsafeじゃないとどうなんの?
1インスタンスで1つのリクエストしか同時に処理できない
意識したことないけど俺も知っときたい
運用はまだ2.5でやってるから関係ないけど
君たちフレームワークは何つかってるの?
Django?
webapp2?
Kay Framework?
Flask?
どれがオススメかな
Flaskが良さげなんだが日本語の参考サイトがちょっと足りない
werkzeug
Flask
964 :
nobodyさん:2013/01/17(木) 17:55:19.40 ID:IKfy6gSY
Google謹製のwebapp2が軽くていいや
web2pyってGAE的にはどうなんかな
標準のwebapp2で今のとこ充分
多少の不満は手入れできるし
appengineメインで設計されてるんで楽だし
フレームワークなんて雨後の筍のように出てきてすぐに廃れていくんだから、学習コスト
が無駄すぎる
枯れてる生に近いやつ選べ
おれもwebapp2だな
レンダリングだけDjango
969 :
961:2013/01/17(木) 19:49:45.75 ID:???
なるほど、参考になった
webapp2で良さそうだな
ルーティングめんどくさいけど、javaのweb.xmlでマッピング設定情報をXMLでシコシコ書き込むよりはマシだろう
ちなみにこれをFlaskで実装しようとしたがワケワカメで挫折した
tp://localhost:8080/image
キャプチャ認証に使えそうなテキスト文字画像を出力する処理ね
(Arial.ttfはスクリプトファイルと同じ場所にファイル持ってきて置く)
import webapp2
from PIL import Image, ImageDraw, ImageFont
class ImageCreater(webapp2.RequestHandler):
def get(self):
color = "green"
text = "AhsAA"
canvas = Image.new('RGB', (80,40), color)
font = ImageFont.truetype("Arial.ttf", 20)
draw = ImageDraw.Draw(canvas)
draw.text((10,10), text, font=font)
self.response.headers["Content-Type"] = "image/png"
canvas.save(self.response.out, "PNG")
app = webapp2.WSGIApplication([
('/image', ImageCreater)
], debug=True)
# Flaskで書くとこんな感じ
from flask import Flask, Response
from PIL import Image, ImageDraw, ImageFont
app = Flask(__name__)
@app.route('/image')
def image_creator():
color = "green"
text = "AhsAA"
canvas = Image.new('RGB', (80,40), color)
font = ImageFont.truetype("Arial.ttf", 20)
draw = ImageDraw.Draw(canvas)
draw.text((10,10), text, font=font)
res = Response(mimetype='image/png')
canvas.save(res.stream, "PNG")
return res
971 :
961:2013/01/17(木) 21:34:40.90 ID:???
972 :
nobodyさん:2013/01/18(金) 09:05:01.27 ID:d9ZkYgTb
スレッドセーフは?
973 :
966:2013/01/18(金) 10:27:21.28 ID:???
>>969 webapp2はルーティング面倒かな
Routesに並べてもいいしFlaskみたいなSinatraライクも可能
Routesには文字列で渡しておいて遅延importも可能
結構柔軟で良いんだけど
webapp2でモデルとかハンドラとか
どういうモジュールにしていったらいいのか
わかんねーよーたすけて
MVCをきっちりフォルダ分け(※)してるWebアプリケーションフレームワークの経験あると
1コントローラー1ファイル、1モデル定義1ファイルで分けたくなるよね
webapp2はそこらへんを詳しく説明する資料少ないかもしれん
俺も色々ググってるうちに上のFlaskの資料を見つけて
「webapp2じゃなくてFlaskでいいか」となったw
※
myapp/
controller/
view/
model/
979 :
nobodyさん:2013/01/19(土) 02:50:41.71 ID:2VybpXiQ
カテゴリごとにハンドラクラスをつくって、
Routesの仕組みを使って
ハンドラクラスの中の関数をよぶみたいな感じじゃいかんの?
いいよ〜
いいよ〜
こんな感じでええんとちゃうん?
project/
controller/ ←これを作成
__init__.py ←この名前の空ファイルも作成
foo.py ←適当なハンドラ
bar.py ←適当なハンドラ
app.yaml
main.py
#######################
main.py
#######################
import webapp2
from controller import *
app = webapp2.WSGIApplication([
("/foo", foo.fooHandler),
("/bar", bar.barHandler)
], debug=True)
#######################
controller/__init__.py
#######################
import os
handlers = []
except_list = ["__init__.py"]
for filename in os.listdir("controller"):
if filename.endswith(".py"):
if filename not in except_list:
handlers.append(filename.rstrip(".py"))
__all__ = handlers
#######################
インデント崩れた; 適当に直しておいて
あとFooHandlerだったわ 小文字→大文字
##########################
controller/foo.py
##########################
import webapp2
class FooHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write("Hello Webapp2!")
##########################
このスレでコード見るなんて胸熱
俺はwebapp2でちょっと複雑なのはこんな感じにしてる
apps/
api/
back/
hadlers/
bar.py
BooHandler
templates/
static/
main.app
front/
common/
models/
baz.py
Foo
Bar
Boo
lib/
app.yaml
>>982 ルーティングは、
routes = [
('/foo/(.*)', 'apps.front.handlers.foo.ShowHandler'),
('/foo', 'apps.front.handlers.foo.IndexHandler'),
('/', 'apps.front.handlers.index.IndexHandler'),
]
とか文字列で組み立てて、
app = webapp2.WSGIApplication(routes, debug=DEBUG, config=config)
って渡せば遅延ロードになるよ
最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225 > Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html > このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/ > いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591 > 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。
最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225 > Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html > このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/ > いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591 > 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。
フレームワーク利用に対するデメリットを書かないフレームワーク紹介記事ほど
迷惑な行為はないもんだ
次スレ欲しいけどなあ
>>990 自分で構築しない連中が書くんだからしょうがない
このフレームワークのここが嫌い
とかいう個人の感想の方がよほどためになるよね
>>992 ありがと
でもテンプレふるくさいし浅いね
なんか替わり投げてみる
ume
u
梅の季節
ume
ume
drop
うめ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。