トップページphp
351コメント127KB

Google App Engine for Python 6アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/01/19(土) 13:49:13.57ID:???
Google App Engine
http://code.google.com/appengine/

■過去スレ
Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/
Google App Engine 2アプ目
http://pc11.2ch.net/test/read.cgi/php/1243654802/
Google AppEngine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267057923/
Google App Engine 3アプ目 (実質4)
http://kohada.2ch.net/test/read.cgi/php/1267094290/
Google App Engine for Python 4アプ目 (実質5)
http://kohada.2ch.net/test/read.cgi/php/1302598469/

■リンク集
はてなブックマーク
http://b.hatena.ne.jp/t/gae
http://b.hatena.ne.jp/t/Google%20App%20Engine
Delicious
http://delicious.com/popular/gae
http://delicious.com/popular/googleappengine

■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0301nobodyさん2014/01/31(金) 14:46:14.26ID:mlRzVxK1
アプリケーションランチャーおよびコマンドプロンプトからは開発サーバーが起動できます
Pydev のStart Debug Server も起動できます

pydevのDebug Configrationsを使ったデバッグで失敗します
コンソール出力です

pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower)
pydev debugger: starting
pydev debugger: google app engine integration enabled
WARNING 2014-01-31 14:27:42,539 urlfetch_stub.py:115] No ssl package found. urlfetch will not be able to validate SSL certificates.
WARNING 2014-01-31 14:27:42,628 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
Error: option --python_startup_script not recognized
Runs a development application server for an application.

dev_appserver.py [options] <application root>

Application root must be the path to the application to run in this server.
Must contain a valid app.yaml or app.yml file.

Options:
--address=ADDRESS, -a ADDRESS
<以下略>

option --python_startup_script
についてぐぐってみましたが有力な情報が出てきません
pydevをダウングレードする方法はないでしょうか?
よろしくおねがいします
0302nobodyさん2014/02/01(土) 12:37:47.93ID:2KFQvVu0
pydevをダウングレードしたら直りました
お騒がせしました
0303nobodyさん2014/02/06(木) 19:05:33.42ID:wcYz7Wuz
DataStoreへのアクセスを減らすためにmemcacheを使おうと思ってるのですが、
これってアクセスされないデータから順に削除される見たいな記述があるんですが、
必ず消されないデータみたいなものって定義できます?
やりたいこととしては、頻繁に書き換えられるエンティティがあるんで、
それをキャッシュしておいて、
書き換えが発生した場合、キャッシュのみを更新していって、
30分とか1時間とか決まった時間経過するとバッチで、
DataStoreに書き込んで最新化するようにしたいんです。
0304nobodyさん2014/02/16(日) 11:14:42.24ID:x7he8HhJ
>>303
NDBは?
0305nobodyさん2014/02/16(日) 18:26:42.92ID:???
NDBは書き込みにキャッシュ無いよ
読み込みのキャッシングにmemcache使ったり
コンテキスト内でのキャッシュがあるぐらい

消されないデータってのはmemcacheじゃ無理
そもそも永続化の仕組みじゃないんだから
いつ消えるか分からないし保証はない
何を扱ってるか見えないからこれ以上言いようが無いけど
途中の更新が喪失しても問題ないものなら
memcacheに通常書き込んで
ただtaskqueで30分おきとかで永続化したら?
0306nobodyさん2014/02/17(月) 16:41:13.43ID:XebsJzK2
memcacheは読み出しのキャッシュなんだし
存続時間に保障がない仕様なんだから
リスク覚悟でやるしかないね
作るのは簡単なんだし
0307nobodyさん2014/03/01(土) 17:57:00.64ID:???
>>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/31
0308nobodyさん2014/03/05(水) 11:07:24.06ID:???
Discounted Instanceみたいなbackend用の割引サービスほしいのお
0309nobodyさん2014/04/03(木) 15:14:38.24ID:???
GAEで静的サイトアプリ作った場合
こんな感じでindex.html置いて
http://www.hogehoge.com/oppai/index.html

後ろの/が無いとアクセス出来ないんだけど
X http://www.hogehoge.com/oppai
○ http://www.hogehoge.com/oppai/

上が表示出来て下が出来ないのはapp.yamlの書き方間違ってる?

app.yamlはこんな↓

application: アプリ名
version: 1
runtime: python
api_version: 1

handlers:
- url: (.*)/
static_files: htdocs\1/index.html
upload: htdocs(.*)/index.html

- url: /(.*)
static_files: htdocs/\1
upload: htdocs/(.*)
0310nobodyさん2014/04/23(水) 17:50:18.58ID:SqpWaV/m
過疎ってるからレスあるのか不安だけど質問していい?

many-to-many(多対多)が必須なアプリケーション
(Twitterならuser-timeline)ってGAEじゃ作れないよね?

timelineにListProperty付ける方法だと
数万人のフォロワーにtimeline配信(Fanout)するの無理だし
(仕様です、で押し通すのはちょっと…)

UserTimelineの結合テーブル用意する場合だとパフォーマンス的に問題あるよね
特にFanout書き込み処理時
(書き込みあるごとにフォロワー数万人分の参照用データを書き込み…)
(TaskQueueに投げて処理するとコスト高くないかい?)
0311nobodyさん2014/04/29(火) 17:43:40.42ID:F2pgXBlu
>>310
そういうのこそ Google App Engine が大好きな分野だろう
パフォーマンス的にも、100% 問題ない。
0312nobodyさん2014/04/30(水) 02:44:11.33ID:???
対多だったらCloud SQLかと思ってたけどそうでもないの?作り方次第?
0313nobodyさん2014/05/03(土) 16:56:58.45ID:???
なんでここpython限定なの?
0314nobodyさん2014/05/03(土) 17:13:48.54ID:???
GAE Javaスレは過疎って消滅したはず
0315nobodyさん2014/05/03(土) 19:18:04.52ID:dwgN+kay
app = webapp2.WSGIApplication( [('/',OpenPage), ('/result',PostPage) ], debug=True )
という形で作ったんだけど
index.htmlみたいな物は無いのでしょうか?
0316nobodyさん2014/05/28(水) 20:13:20.59ID:???
すごく久しぶりに弄ろうとしたら
いつのまにか 10 個から 25 個にアプリケーション枠増えてるのね
0317nobodyさん2014/05/29(木) 08:38:37.82ID:???
マジか
0318nobodyさん2014/05/29(木) 08:39:19.03ID:kYNnKCf7
ネイティブスマホアプリのバックエンドに使ってみようかな
0319nobodyさん2014/05/29(木) 09:18:18.43ID:???
>>141
試しにアプリ増やしてみたけど Python 2.5 でもまだいけてる

>>131
どんどん使いやすくなるね

ユーザー少なすぎてサービス終了にならないかどうか心配
0320nobodyさん2014/05/29(木) 12:40:53.17ID:???
>>316
マジ!?
>>319
Amazonの方に人が流れてそうだから心配。Googleには頑張って欲しい。
0321nobodyさん2014/05/29(木) 13:08:15.48ID:Tmn0U92g
>>131
めちゃめちゃ使いやすくなった
0322nobodyさん2014/05/30(金) 04:10:24.03ID:???
まじかー、結構グラフ赤になること多かったから1ドル運用してみっかな
0323nobodyさん2014/05/30(金) 15:18:06.54ID:???
俺は使わんが、PHPに対応したのはいいと思う
次はRubyだな
Herokuの客層を取り込めれば大きい
0324nobodyさん2014/05/30(金) 15:20:37.54ID:???
>>319
ロックイン上等のシステム作っておいて
勝手に終了されたら潰れちゃう会社出てくるだろ

AWS向けに移植するにしても金かかるんやぞw
フロントエンド(HTML&JavaScript)部分は流用できるとしても
データストア関連のコードは全部書き直しだわ
0325nobodyさん2014/05/31(土) 02:34:05.70ID:???
だから心配してるんだよ

簡単に引っ越せたり
そもそもどうでもいいサービスなら
客減ろうが潰れようが
どうなろうと知ったこっちゃない
0326nobodyさん2014/05/31(土) 05:29:13.90ID:???
データストア関連のコードを抽象化するレイヤーでwrapすれば良いNONI
0327nobodyさん2014/05/31(土) 09:12:28.43ID:???
AWS の SQL で Master/Slave とか HRD の
Datasore をエミュレーションする python ラッパー作ったら需要あるかな
それなら最初から AWS で造った方が良いか
0328nobodyさん2014/05/31(土) 09:32:45.30ID:???
>>325
そんな大事なサービスをGAEで作っちゃったんですか!?
て話になる。
0329nobodyさん2014/05/31(土) 14:39:49.16ID:???
GAEってどうなの?使える?
0330nobodyさん2014/05/31(土) 15:18:47.38ID:???
使える
0331nobodyさん2014/06/01(日) 04:04:02.09ID:qDHk7um9
初心者質問ですみません。サービスを作って公開したところへスクリプトか何かでアタックされたら一気に課金枠内上限までいってサーバーが停止してしまうのでしょうか。Googleが感知してIPを弾いてくれたり、何らかのガードはGAEにデフォルトで付いてるのでしょうか。
もしそういった仕組みが無ければみなさんその辺りは自分で対策されているのでしょうか。
0332nobodyさん2014/06/01(日) 10:14:04.61ID:iT9OtQtU
>>324
データストア関連コードの書き換えなんてそんなに面倒かな?
0333nobodyさん2014/06/01(日) 10:19:09.18ID:iT9OtQtU
>>331
一日単位で課金の上限に行くとサービス停止する
IP弾く機能はあるけどIPの登録は自分でする必要がある
自分は月間の予算を3倍取っておいてサービス継続を優先してる
異常があったらすぐIP弾いたりする
いままで一番多いのはBINGBOTだったけどね
なくなったページにいつまでもアクセスしてくるからログがそればっかりになる
302返さない自分も悪いんだけどさ
0334nobodyさん2014/06/01(日) 10:43:57.71ID:???
へんなアクセスの IP はプログラム自信で見つけることは可能なので自動化したいけど
IP の登録はダッシュボードからしか出来ないのかな?
アク禁 IP 登録用の API とかある?
0335nobodyさん2014/06/01(日) 14:29:50.46ID:iT9OtQtU
>>334
ないよ
IPの登録はdos.yamlとかdos.xmlをアップロードすることで可能だから
ファイルアップロードをapp engine内で行えば可能かも
0336nobodyさん2014/06/01(日) 23:44:43.59ID:???
>>333
レスありがとうございます。IPは手動登録なんですね。
ロボット向けにきちんと正しいステータスコードを返すべきというのも参考になりました。
>>335の方法も興味深いです。

ユーザー投稿有りでデータベースを増やしていく形のサービスの依頼(仕事レベルでは無い)を受けていて、アクセス過多以外にデータベースのデータ(イコールこのケースでは資産)をどうスクレイピングから保護するか、という事も気になっていました。

ベストはユーザー登録。
ユーザー未登録で投稿可能にするのであればIP監視も必要。
ユーザーエージェントもチェック。
IPやユーザーエージェントは偽装可能なので、他にクッキーかURLのquery経由で一時的なIDを渡してやってGAE側でvalidateする。
適当なIDを渡してもvalidateを通らないようにしておいて、一時IDはクライアントとGAE側で同じ生成アルゴリズムを用いて正当性を検証する。

というような事を考えています。
きっとまだ抜け穴はありそうなので引き続きデータ保護を検討してみます。
03373362014/06/01(日) 23:51:20.56ID:???
少し前にSimejiの騒動があったので、どう不正なアクセスからコンテンツのデータを保護するかという事が気になりました。
普段はクライアント側を書いていてサーバー側は初心者なのですが、万一参考になればと思って先の独り言の様な文章も投稿させて頂いた次第です。
スレ汚し失礼しました。
0338nobodyさん2014/06/02(月) 02:57:47.45ID:???
いいぞ
スレ過疎ってるから何でもこいだ
0339nobodyさん2014/06/02(月) 09:35:56.51ID:pUDft4ul
>>336
javascriptを使って認証cookei与えればjavascriptが走らない汎用Botは弾けるよ
ただ、そのサイト狙い撃ちでスクレイピングしてくるやつなら当然ソースハックして
対策はしてくるだろうけどそれもちょっと難読化して暗号化ロジック隠せば
半分くらいのBot作者の手には負えないかも
でも検索エンジン弾いちゃっていいのかってのはユーザビリティ考えるとどうなの?って感じ
ユーザーがそこまで望むならメールフォーム使ったユーザー登録くらい作るよね
0340nobodyさん2014/06/02(月) 12:14:42.15ID:???
python3.4でgaeが書きたい
0341nobodyさん2014/06/02(月) 17:10:26.83ID:???
>>336
ユーザー登録は google account で代用出来る
不正なアクセスあったらそのアカウントを自分の DB でブラックリスト化する
0342nobodyさん2014/06/02(月) 17:26:05.70ID:???
自分のみ利用したいんですが
どこで設定するのでしょうか?
0343nobodyさん2014/06/02(月) 19:43:42.07ID:???
自分のみなら
app.yaml で require: administrator だったかな
0344nobodyさん2014/06/05(木) 08:20:40.58ID:aC0HWfOe
誰もいない
0345nobodyさん2014/06/05(木) 11:06:56.01ID:???
スパゲティするなら今のうち
0346nobodyさん2014/06/08(日) 07:31:00.85ID:???
PC向けページしか無くてスマホからの利用は不便なので、
中継サーバーでスマホ向けにするような Webアプリとか作ってみたいんだけど。

ちなみに PC向けページはレコーダーのDIGA、
LAN内のサーバーは rep2 動かしてる Win版 XAMPP、
アクセスしたい端末は iPod touch。
0347nobodyさん2014/06/08(日) 15:20:19.32ID:???
作ってみたいから何なんだよ・・・
0348nobodyさん2014/06/17(火) 18:27:43.53ID:???
pythonスレで誘導されてきました。
本文コピペになってしまいますが、以下、ご教示頂けないでしょうか。
宜しくお願い致します。

http://yono.cc/python/gae/

こちらを参考にして、HelloWorldを表示するだけのWebサーバを作りました。
上記ページの「webapp フレームワークで Hello World を書き直してみる。」のところに掲載されているソースコードをまるまる利用しています。
しかし、実際にブラウザでアクセスすると以下の様なエラーが出るのですが、これは何が原因なのでしょうか・・・?
Hello worldすら出来ないとかもうどんだけダメなんだ自分・・・


ERROR &#160; &#160;2014-06-17 07:20:34,551 wsgi.py:262]
Traceback (most recent call last):
&#160; File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 239, in Handle
&#160; &#160; handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
&#160; File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 301, in _LoadHandler
&#160; &#160; raise err
ImportError: <module 'test' from '/中略/channelapitesttest/test.py'> has no attribute app
INFO &#160; &#160; 2014-06-17 07:20:34,555 module.py:639] default: "GET / HTTP/1.1" 500 -
0349nobodyさん2014/06/17(火) 20:29:29.44ID:???
>>348
ソースやyamlの何処かに'test.app'ってのがありそうだな
appって拡張子があるような罠
0350nobodyさん2014/06/18(水) 07:20:49.63ID:???
馬鹿には無理
03513362014/06/18(水) 12:02:45.87ID:???
馬鹿の一つ覚え
■ このスレッドは過去ログ倉庫に格納されています