Google App Engine for Python 4アプ目 "app engine"でtwitter検索
ちょっと上に名前挙がってるけど GAE関連のフレームワーク作っている人が、 今度から日本人用GAEのハッシュタグに「#gaeja」を使いましょう、と提案し 皆がそれに続いた感じ
デプロイ 問題ない? 連続して失敗するんだけど・・・
ロールバックしたら直った ごめん
806 :
nobodyさん :2012/05/14(月) 17:52:13.95 ID:G5bpTIUz
GAEの、Google側が守るポリシーってどこに書いてありますか? Googleがアップされたコードをリバースエンジニアリングしてパクる事があるのかどうかが知りたい。 そういう気が無いなら普通はポリシーに書くと思う。 最近のGoogleのポリシーに関する流れからして不安です。 恐らく、フェアユースの4つの判断基準からして、 リバースエンジニアリングしてパクったら米国でも違法なんだけど、 それでもポリシーに書いて欲しい。
自分で探せ
パクられるから使わないほうがいいよwwww
ユニークキーにid()を使ってるんですが、桁が増えるスピード早すぎません? 体感的にインクリメントの10倍くらいのスピードで増えてる気がする
>>793 ありがとうございます。実は質問した時もwebapp2_extrasはテストしていたけど失敗してました。
1回プロジェクトを削除したらうまくいくようになりました。
そのページにリンクがある
全文検索使ってみた人いる?なんか思ったより検索文字ヒットしなくね?
全文検索てngram?
cronをいっぱい仕掛けるとタスクが混んで新しいスレッドが立ち上がってしまったり応答が遅くなったりするので 毎時何分にそれぞれズラして起動したいのですが、そういう指定ってできますでしょうか?
同一スレに答えが書いてあるとは orz
同一スレに答えが書いてあるとは orz ごめんなさい
822 :
nobodyさん :2012/05/31(木) 15:22:00.58 ID:mdpT8+st
j
blobstore は画像だけではなくfiles api など使えばどんなデータも保存できますが JSONデータの一時保存に使おうと思うと直接ダウンロードできるURLを取得する get_serving_urlがエラーを起こします。 image api だから当然かと思うのですが、どこかでblobkeyからURLを生成するのを見た気がするのですが ご存知ではありませんか?
DSのBlobPropertyでいいじゃない ndbならJsonPropertyもある
容量をめいっぱい確保しておきたいのとトラフィックを節約できるのでできればblobstoreサーバーにリダイレクトしたいのです
ちょっと調べましたがdatastoreのkeyを生成する方法しかありませんでした 勘違いだったみたいです
Built-in IndexesがDataStoreの500MB超を占有していて困ってます。 保存してるデータ量からすると異常にも見えるのですが(Entity 170MB に対してIndexes 530MB) このindexのサイズが正しいのか調べる方法とか、過去のBuilt-in Indexesに対する 事例なんかを知ってたら教えてくれませんか。 1GB未満の利用のまま解決したいのだけど、手がかりになるデータが少なくて困ってます。
828 :
nobodyさん :2012/06/04(月) 22:53:20.82 ID:OLIL9p2L
blobstore って条件付きリクエストに対応していないんだね。 自力で実装したよ。
829 :
827 :2012/06/06(水) 20:34:37.04 ID:???
グループに投稿してみました。 解決したらこっちにも原因と対策反映しておきます。
>>827 Datastore Statistics見れば一つ一つのindexの使用量書いてあるよ
減らすにはindex使わないでkeyアクセスのみで頑張るしか無いね
今までフロントで動かしてたサービスをバックエンドで動かしたいんですが 要するに今までフロントで動かしてたURLを mytask = taskqueue.Queue('mintask') task = taskqueue.Task(url='/front', params={},target="backends") mytask.add(task) 的なことをやればいいようですが、いままで使ってたGETとPOSTのハンドラにそのまま パラメータを投げるにはどうしたらいいでしょうか? params={}の部分に与えるDictをどう作ればスマートか、ということです。 request.POSTの中身をごちょごちょやったのをみたことあるんですが探しても見つからないし なんかスマートじゃないので
日本語でおk フロントエンドをバックエンドにまわしただけなら何も変更する必要はないよね バックエンドの処理結果をフロントに投げたいってこと?
バックエンドを起動するためにフロントエンドのリクエストハンドラが必要かと思ったんですが 設定だけでバックエンドで動くリクエストハンドラが作れますか?
フロントエンドとバックエンドのリクエストハンドラは共通 targetの指定で切り替えるだけ cronにもtargetが指定できる
あれ?フロントのリクエストハンドラ内に mytask = taskqueue.Queue('mintask') task = taskqueue.Task(url='/front', params={},target="backends") mytask.add(task) って書いてバックエンドに渡すんじゃないんですか? バックエンドに指定したURLにGETで直接バックエンドが動いちゃえばそれでいいです
わかった。もともとタスクじゃないハンドラのリクエストから バックエンドでタスクとして起動したいってことか すでにタスクにしてあるのかと思った。つーか、バックエンド関係ないよね paramsはエラーチェックとかして普通に渡せばいいよ 直接渡すなら params=dict(request.POST) とかでおkなはず (webapp使ってないから試してない)
>>836 dict(request.POST)でためしてみます
伝わる書き方できなくて申し訳なかったです
送信量のリミットは32Mくらいあったはずだけどうちの場合datastoreから必要なデータ取り出してる間にメモリーオーバーになっちゃう どうしたらいい? response.out.writeがバッファかまさず送出してくれてしかもループの中で何度も呼び出せればいいんだけど そのへんの仕様がわからない
webappに頼らずに自前で吐けばいい それでもうまくいくかどうかは試してないので知らない
うぎゃー 難易度高いよ
Keyの入ったlistから順次エンティティを取り出してフィルタリング処理をする部分でメモリーエラーが出ます。 chanksizeが大きいと巨大なエンティティを一度に取得してしまいメモリエラーになるのはわかりますが 相当減らしても一向にエラーが収まりません。 あまりに下げすぎると(10以下)今度はタイムアウトが出てしまいます。 一括処理では同じエンティティを500ほど取得しても問題ないこともありまして もしかしたらほんとにメモリリークをさせているのではないかと疑っています。 下記コードにメモリリークを疑う場所や対処法がありましたらお知恵を貸して いただけると助かります。 reskey = [] chanksize = 100 listcount = list.count(99999) for i in range(0,listcount,chanksize): db1 = db.get(list[i:i+chanksize]) db2 = cls.do_filter(db1, sddb) reskey.extend(db2)
あ
843 :
827 :2012/06/25(月) 00:19:11.39 ID:???
>>830 Indexesに表示されてる各Kindのサイズに収まってないから変だなと思ったわけです。
Blobstoreのexperimentalである"Writing Files to the Blobstore"を使ってるのだけど…それについてテストしてみた。
Blobstoreにput/deleteしまくって、そのblobkeyをdatastoreの1EntityにStringList(indexes=False)で格納
# blobkeyはこんなので取得
blob_io = files.blobstore.create(mime_type=content_type, _blobinfo_uploaded_filename=img_name)
with files.open(blob_io, 'a') as f:
f.write(img_data)
files.finalize(blob_io)
blobkey = files.blobstore.get_blob_key(blob_io) # blobkeysというStringListPropertyにappendする
844 :
827 :2012/06/25(月) 00:23:02.02 ID:???
数日後に上記Entityのblobkeysを持ってきてblobstore.delete(blobkeys)実行後、全Entity削除してみる。
すると、DashboardのBlobstoreは0MBになってもDatastoreに100MBほどの何かのデータが残ったまま。
あと、Blob Viewerで消したはずの画像ファイルが見れる。これって、こういうことでしょうか。
1) Blobstoreのデータが消えてない
2) Blobstoreのデータは消えているが、
>>827 で問題にしたIndexのデータが残ってる
自分は2と思っていて、BlobStoreのIndexesが上記blobkeyのdeleteで消えてないのではと推測しています。
そうだとして、どうすればIndexが消えるとかまでは分からんのですけど…。
誰か教えてください…blobstoreのこと…Indexesのこと…Datastoreのこと…。
GAE1.7リリースされたのになんでレスが無いんだよwwwさすが糞ジャップ
それよりGoogleがIaaS始めるらしい
そんなことよりDartのPaaSはよ
App Engine SSL for Custom Domainsくらいしか目玉無かったけど それすらSSL使ってない俺には関係なかった
もしかしてSSL for Custom DomainsでiPhoneのPushも実装できちゃうんでしょうか??
SSLCustomDomain高すぎ
やっぱGAEは諦めてEC2とかにいった方がいいのか slim3の開発も去年から進んでない・・・
他人任せの無能はとっとと他所に行くといいよ?
GAEとEC2って全然別物だと思うんだが..
EC2に対応するのはGoogle Conpute Engineだよね
また僕の技術料はコストゼロ円君か
851だが、ちゃんと調べたら作ってるっぽい I am going to release slim3 1.0.16 next week. JSON problem has been fixed in trunk. Yasuo Higa 心配させやがってやすお
しかしGAEのフレームワークに限った話ではないけれど、 使ってるフレームワークが開発中止になったら、それに依存しまくってた場合とかどうなるんだろうか フレームワークを使わないというのも手なのか みんなどういう認識なの?
フレームワーク程度なら何とでもなるかなあ 書き直せばいい そういうのへの依存ってたかが知れてるというか、すぐに乗り換えられるレベル 本当に重要なロジックの関わるところに対しては安易に外部ライブラリは使わないようにしてる 言語自体の公式な組み込みだけ使って、先行き不透明なサードパーティー製のはなるべく使わない 時には車輪の再発明してでも自分達ででゼロから開発することで将来性と保守性を担保できるっていうスタンス この辺は人・企業によって考え方がかなり違うので一概に正解って無いと思う
urlfetch→DataStoreWriteってだけのコードなんだけど、 同じコード・設定一緒・同じアカウントなのに、アプリ(置く場所)によって速度が違う・・・ 最初TaskQueueおっせーwとか思ってたら違うアプリ名の場所に置いたら爆速 これって仕様ですかね?
GAEはもういいからDartのPaaSはよ
なぜDart クライアントサイドだろ nodeとかの上で動かすんじゃ、あんまり意味ないしな
Dartはサーバサイドも視野に入れてるのが売りの一つなんだけど
DartやるにしてもGAEでいいんじゃ
865 :
nobodyさん :2012/09/01(土) 20:18:24.01 ID:0FcFAh+r
GAE は糞
いつの間にか1.7.1がリリースされてんじゃねえか
書き込みが激減してるな 完全に終わったのか
契約があるから5つ管理してるけど 増やそうって気にならないな 料金だけでもメリット出してくれたらいいのにな
料金そんなにダメなの? EC2なんかに比べるとさすがに安かろう?
ダメってほどのことはないけど やっぱコスト抑えたくなるじゃん? そこで儲けが決まるから プログラミングがそんなことばっかで 建設的なことがやれなくなるのがダメやん?
無限スケールを何もせず手に入れられるってのも時間的コストは激減すると思う EC2だといくらボタンひとつでスケールするとは言っても、 DBのレコードが増えるとMySQLのチューニングが必要だったり、 NoSQLでやるにしてもその知識が必要だったりする GAEが人気無いのは、単純にGAE的なメリットが活かされるようなアプリを作る人が少ないからだと思う
872 :
nobodyさん :2012/09/24(月) 19:14:58.36 ID:PjuCm/UC
今北 とりあえずPython版から始めてみよう
ようこそ
874 :
nobodyさん :2012/09/25(火) 02:01:17.56 ID:yXRlmANa
DSの読み書きコストがきつすぎる コスト削減のためにインデックス増やさないよう、 ひたすらトリッキーなコード組んでくとか糞すぎるわ。 拡張性もクソもない
いまさらだけど、脱M/Sでidに-hdr付ける移行方法って、作れるapp数を圧迫しちゃうの? hdr化して元のIDに戻すのは無理っぽいって結論になったんだけど、それでOK?
>>874 まったくそうだよ
最適化をしないとコストが高くなりすぎるのはソリューションの問題だろう
ところでN/S廃止決まったの? 最近あちこちで移行の話題見るけど
pythonで非同期処理書いても1インスタンスで動かしたら結局逐次実行なの?
なにこの糞スレ
882 :
nobodyさん :2012/11/05(月) 03:57:26.61 ID:pM9J2Xt4
W
Cloud SQLの無料トライアルはどうよ?
884 :
nobodyさん :2012/11/16(金) 17:56:13.38 ID:py0Lb2ER
今ってファイル数3000って制限ないよな?
えっ まじで?
これか Version 1.5.5 - October 11, 2011 We have increased the number of files you can upload with your application from 3,000 to 10,000.
ありあり
無料枠でデータストアの保存容量の上限は?
Googleクラウドコンピュータっていつ使えるようになるの?
もう使えんじゃないの?
今更だがGAEは転送量高すぎて、コンテンツの内容によっては全く使い物にならん
キャッシュでがんばれ
894 :
nobodyさん :2012/12/06(木) 13:05:26.26 ID:YzQjylG6
どんな内容扱ってんの? バイナリはGCSに置けばいいんだし、S3使ったっていいじゃん。
APPS 無料枠撤廃 だんだん外堀埋めてくねGが自分から
APPの文字に反応してこのスレに書いちゃった子がでちゃったよ
GuidoがDropBox行っちゃったけど影響が出ないといいな
APPSが有料になると独自ドメイン使いづらいだろ
900 :
nobodyさん :2012/12/10(月) 18:02:01.86 ID:KmNmCIRH
Guido! ndbどうすんだよ!
apps で独自ドメインメール使ってたんだけど やばいよね もう潮時かな
902 :
nobodyさん :2012/12/11(火) 10:26:40.85 ID:niOohGMF
GvRが去った今となってはGAEも安全地帯ではない。
ndbは粗方出来ているからいいが、3kへの対応とかどうするんだろうね
今使ってる独自ドメイン以外のはもう追加出来ないのか まんどくせ
それは大丈夫らしい
http://googlesystem.blogspot.jp/2012/12/google-apps-no-longer-free-for-small.html Update: Apparently, there's a workaround that lets you use the free version of Google Apps for a single account.
"If you create a new Apps account going through the App Engine Admin Console
you'll still be able to create a Standard Apps account for free
but you'll only be able to get 1 user per account rather than the 10 you get today,"
says Greg D'Alesandre, Senior Product Manager for Google App Engine.
Azureに無料版が出来るって
908 :
892 :2012/12/16(日) 20:43:42.00 ID:???
>>894 S3も検討したが、計算したらほとんどGAEと変わらなかった。
ちなみに画像が主体のWebサービスで、今はさくらVPSの1500円で済んでいるのに、
GAEに引っ越すと、転送量だけで5〜7万近くいく試算がでた。
S3は確かに少し安くなったと思うが、それでも1500円と比べるとありえないわー
とはいえGAEのスケールは魅力的だし、BigTable自体のストレージ費は安い
だから、コンテンツをさくらVPS、それ以外をGAEに任せる、っていう構成がおれの中で主流になりつつあるのだ
ep
>>908 >ちなみに画像が主体のWebサービスで、今はさくらVPSの1500円で済んでいるのに、
>GAEに引っ越すと、転送量だけで5〜7万近くいく試算がでた。
>S3は確かに少し安くなったと思うが、それでも1500円と比べるとありえないわー
わかるー!
転送量に料金がかかるのは、GAEに限らず海外サーバの欠点だよね。
ほんとはそれが料金体制としては正しいことだとは思うけど。
また自分の技術力はコストゼロ円君の登場か
自由なサーバならまだしも制限の多いGAEで技術力で克服とか限界があるだろ
>>910 逆に転送量無料で無制限っていうさくらもありえないわーって感じだけどね
913 :
nobodyさん :2012/12/17(月) 13:46:30.96 ID:EWD5rxbL
いや、それはさくらのVPSの無料の転送量で問題が出ない程度のサービスだからだろ 本気でGAEのスケールが重要になってくるようなサービスなら ストレージもスケールしてくれなきゃ困るんだから S3とかGCSとか使うのが当たり前だろ VPSで充分なものをPaaSに持ってくるのがそもそも間違いだ
>>913 さくらVPSをN個契約して分散させることも十分可能
しかも一度その分散の仕組みを作ったらさくらVPSを買い足すことで無限にスケール可能
S3とかなら一貫しているので管理や設計しやすいメリットはあるが、
やっぱり転送量考えるとさくらVPSで分散した方が遥かに安い
このメリットは譲れない
915 :
nobodyさん :2012/12/17(月) 17:39:57.55 ID:EWD5rxbL
まあ小さい内は参照と更新の比率次第だわな あっという間にストレージ使い切る様なサービスなら VPSの継ぎ足しは馬鹿らしいし管理もクソ 参照主体ならさくらみたいなものでもありはあり でもそんな細切れストレージに使いたいだけなら ablenetとかで充分じゃね?なんでそんなにさくら推し?
もちろん参照主体 まあ十年もしない内に世の中のインフラコストも下がって「馬鹿けた手法」になるんだろうけど ただ、今のところ自分のように音や画像をふんだんに使うサービスはそういう方法を取らなければ無料で運用することはできない >なんでそんなにさくら推し? 別にさくらのさくらじゃないよ 転送料無料で無制限で安定してるならどこでもよし
公式でどっかに事例集まとめてくんねえかな 既存のは古くて話にならん
918 :
sage :2012/12/19(水) 10:37:54.42 ID:GfFb/zFv
Searchの料金体系さっさと出してほしい
全文検索ってGoogleの検索みたいに使えんの? 日本語のドキュメントが全然ないんで手出しできないよ
>>919 Google検索よりはしょぼい
あいまい検索とか出来ないし
でもDtastoreだけで出来なかったあれこれが
比較的低コストに叶うっぽう
921 :
nobodyさん :2012/12/28(金) 17:20:12.56 ID:Np5nab0m
ぽう
923 :
nobodyさん :2012/12/30(日) 07:07:31.09 ID:J1x2YB3i
925 :
nobodyさん :2013/01/05(土) 09:19:01.99 ID:jXQiYMIw
1日に1億リクエスト捌くようなアプリのバックエンドなら Javaでインスタンス立ち上げっぱなしの方が トータルで良い性能が出るはず 小さめのサービスや徐々に育てていくつもりのものは 明らかにPythonの方が向いてると思う なので俺はPythonを選んだわ
何でリクエスト大量になると逆転するん?
927 :
nobodyさん :2013/01/05(土) 11:32:59.44 ID:jXQiYMIw
Javaの方がピーク性能が高いから スピンアップがネックなんであって AllwaysOnなんか使って温め続けられるなら Javaの方が性能は良い でもサービスが小さかったり試行錯誤中は 中々起動しっぱなしにするコストはかけられない 小さく初められるPythonの方が向いてる サービスが充分に大きくなったらJavaに切り替え というのがGAEで個人や小さな資本が でかいサービス狙う場合のベターな方法じゃないかな Datastore等インフラは共通だし 移行に非現実的なコストが掛かるわけじゃない まあPythonでも余程の規模じゃなきゃ問題ないと思うけど
928 :
nobodyさん :2013/01/05(土) 11:56:04.02 ID:jXQiYMIw
単純にリクエスト捌くだけとか オリジナルの画像処理するとか 演算のみの比較ならJavaの方がかなり速い ちなみにひがさんのコメントにもあるけど 1年半前ぐらいの比較だと単純処理は10倍近い差 でもDatastoreとかUrlFetch使うと 結局大きな差が見られなくなってく Memcacheでがすがすリクエスト捌いて TaskQueueでDatastoreに書き込みとかしないと その速度差が活かせない Javaで書いててもっさりに感じるとしたら 結局はスピンアップが足引っ張ってるんじゃないかな 一番割安で済むインスタンスの設定とかだと スピンアップが頻繁に発生するし
なるほど何となくわかったありがとう
>>930 不正なソフトウェアを事前に検出しました
pythonでもけっこうスピンアップかかってる感じなんだけど なにか減らすコツとかってないの?
外部の監視サービスで決まった時間内にたたいたりすればいいんじゃね
cronで1分しばきでおk つかAlwaysOnでいいだろ
935 :
932 :2013/01/09(水) 10:38:58.46 ID:???
いや、金無いんでAlwaysOnとか インスタンス起こしっぱなしはちょっと無理なんだ せめてpython側の書き方とかオプションとかで スピンアップにかかる時間減らせないかな?
936 :
nobodyさん :2013/01/09(水) 11:25:01.44 ID:MFA8x2Gu
後者の方が却って金掛かるんじゃね?
937 :
932 :2013/01/09(水) 12:26:41.62 ID:???
今の所身内で使ってるだけのアプリなんで 無料枠に収まってるんだ けどスピンアップが遅くていざ使おうとすると もたついてイライラする 静的なファイル増やしてAjaxでデータ取って とかいう方法が良さそうなのは分かるんだけど pythonの書き方そのものを工夫したら もうちょっとスピンアップ時間減らせないかなと思ったんだ
938 :
nobodyさん :2013/01/09(水) 12:54:38.31 ID:CFlVPMl1
モジュールの遅延ロードを心がけるのと 単一のmain.pyに何でもぶっこまない ぐらいかな
遅延ロードってどうやるの? mainがいくつももてるの?
mainはいくつももてる
ファイルの先頭で何でもかんでも全部importせずに 関数の中とかで必要になったときにimportってことだね
なんか、そこまで気を使うなら、多少値が張ってももっと汎用性の高いシステムのほうが いいかなぁ。そりゃスケーラビリティの有利さはあるけど。
943 :
nobodyさん :2013/01/11(金) 12:24:41.08 ID:gLHAc5k8
おいおいこの程度全然「そこまで」じゃないぞ そもそもGAEが好適なアプリケーションとか規模なら どんなインフラ使ったって気違いみたいな最適化は要るよ もちろんPaaSだから下の層触れないって割り切りだし GAEの限界は色々あるけどさ 今までのノウハウで対応できないだけで 機械部分の管理不要はメリットでかいよ
禿同
945 :
nobodyさん :2013/01/11(金) 12:59:17.99 ID:6pl5qRPF
>>943 お互いに、どの程度の「スケール」を想定してるかに齟齬があるかも
946 :
nobodyさん :2013/01/11(金) 16:07:57.92 ID:gLHAc5k8
アベレージかピークかどっちかに その辺のレンタルサーバーじゃ捌くのが面倒な程度 リクエストが来る用途じゃなきゃ GAEなんか使うメリットないのは当たり前じゃん 機械をカリカリにチューニングする労力を 価値あって稼げる実装に回せや って状況で生きる代物だろ 汎用性求める時点でおかしいよ
64万コア使わせて
948 :
nobodyさん :2013/01/11(金) 21:26:44.84 ID:6pl5qRPF
>>946 言語(あるいはAPI)としての汎用性としての話でさ、レンタルサーバのコードがどの程度
使いまわせるかって話の流れだとしたいんだけど、ずれてる?
949 :
nobodyさん :2013/01/11(金) 21:39:39.26 ID:gLHAc5k8
うん、ずれてる 今のGAEの不便さってのはオートスケールのためのもの サービスをでかく或いは熱く仕立てて オートスケールのメリットを受けられないアプリは そもそもGAEに適してないよ 今のとこソーシャルゲームのバックエンドが好適例で 1億リクエスト/dayとか捌く事例が出たりしてるけど もっとオーソドックスなサービスが育ってくれば ユーザーの受け取り方も変わると思う
950 :
nobodyさん :2013/01/12(土) 03:29:27.48 ID:KTdWHGw/
>>949 それは、最初からGAE想定してスタートアップするってことになるの?
あえて抜けしてるんだろうけど 無料枠があるのも魅力の一つ
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 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。