Google App Engine for Python 6アプ目
■ このスレッドは過去ログ倉庫に格納されています
NDBは書き込みにキャッシュ無いよ 読み込みのキャッシングにmemcache使ったり コンテキスト内でのキャッシュがあるぐらい 消されないデータってのはmemcacheじゃ無理 そもそも永続化の仕組みじゃないんだから いつ消えるか分からないし保証はない 何を扱ってるか見えないからこれ以上言いようが無いけど 途中の更新が喪失しても問題ないものなら memcacheに通常書き込んで ただtaskqueで30分おきとかで永続化したら? memcacheは読み出しのキャッシュなんだし 存続時間に保障がない仕様なんだから リスク覚悟でやるしかないね 作るのは簡単なんだし Discounted Instanceみたいなbackend用の割引サービスほしいのお 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/(.*) 過疎ってるからレスあるのか不安だけど質問していい? many-to-many(多対多)が必須なアプリケーション (Twitterならuser-timeline)ってGAEじゃ作れないよね? timelineにListProperty付ける方法だと 数万人のフォロワーにtimeline配信(Fanout)するの無理だし (仕様です、で押し通すのはちょっと…) UserTimelineの結合テーブル用意する場合だとパフォーマンス的に問題あるよね 特にFanout書き込み処理時 (書き込みあるごとにフォロワー数万人分の参照用データを書き込み…) (TaskQueueに投げて処理するとコスト高くないかい?) >>310 そういうのこそ Google App Engine が大好きな分野だろう パフォーマンス的にも、100% 問題ない。 対多だったらCloud SQLかと思ってたけどそうでもないの?作り方次第? app = webapp2.WSGIApplication( [('/',OpenPage), ('/result',PostPage) ], debug=True ) という形で作ったんだけど index.htmlみたいな物は無いのでしょうか? すごく久しぶりに弄ろうとしたら いつのまにか 10 個から 25 個にアプリケーション枠増えてるのね ネイティブスマホアプリのバックエンドに使ってみようかな >>141 試しにアプリ増やしてみたけど Python 2.5 でもまだいけてる >>131 どんどん使いやすくなるね ユーザー少なすぎてサービス終了にならないかどうか心配 >>316 マジ!? >>319 Amazonの方に人が流れてそうだから心配。Googleには頑張って欲しい。 まじかー、結構グラフ赤になること多かったから1ドル運用してみっかな 俺は使わんが、PHPに対応したのはいいと思う 次はRubyだな Herokuの客層を取り込めれば大きい >>319 ロックイン上等のシステム作っておいて 勝手に終了されたら潰れちゃう会社出てくるだろ AWS向けに移植するにしても金かかるんやぞw フロントエンド(HTML&JavaScript)部分は流用できるとしても データストア関連のコードは全部書き直しだわ だから心配してるんだよ 簡単に引っ越せたり そもそもどうでもいいサービスなら 客減ろうが潰れようが どうなろうと知ったこっちゃない データストア関連のコードを抽象化するレイヤーでwrapすれば良いNONI AWS の SQL で Master/Slave とか HRD の Datasore をエミュレーションする python ラッパー作ったら需要あるかな それなら最初から AWS で造った方が良いか >>325 そんな大事なサービスをGAEで作っちゃったんですか!? て話になる。 初心者質問ですみません。サービスを作って公開したところへスクリプトか何かでアタックされたら一気に課金枠内上限までいってサーバーが停止してしまうのでしょうか。Googleが感知してIPを弾いてくれたり、何らかのガードはGAEにデフォルトで付いてるのでしょうか。 もしそういった仕組みが無ければみなさんその辺りは自分で対策されているのでしょうか。 >>324 データストア関連コードの書き換えなんてそんなに面倒かな? >>331 一日単位で課金の上限に行くとサービス停止する IP弾く機能はあるけどIPの登録は自分でする必要がある 自分は月間の予算を3倍取っておいてサービス継続を優先してる 異常があったらすぐIP弾いたりする いままで一番多いのはBINGBOTだったけどね なくなったページにいつまでもアクセスしてくるからログがそればっかりになる 302返さない自分も悪いんだけどさ へんなアクセスの IP はプログラム自信で見つけることは可能なので自動化したいけど IP の登録はダッシュボードからしか出来ないのかな? アク禁 IP 登録用の API とかある? >>334 ないよ IPの登録はdos.yamlとかdos.xmlをアップロードすることで可能だから ファイルアップロードをapp engine内で行えば可能かも >>333 レスありがとうございます。IPは手動登録なんですね。 ロボット向けにきちんと正しいステータスコードを返すべきというのも参考になりました。 >>335 の方法も興味深いです。 ユーザー投稿有りでデータベースを増やしていく形のサービスの依頼(仕事レベルでは無い)を受けていて、アクセス過多以外にデータベースのデータ(イコールこのケースでは資産)をどうスクレイピングから保護するか、という事も気になっていました。 ベストはユーザー登録。 ユーザー未登録で投稿可能にするのであればIP監視も必要。 ユーザーエージェントもチェック。 IPやユーザーエージェントは偽装可能なので、他にクッキーかURLのquery経由で一時的なIDを渡してやってGAE側でvalidateする。 適当なIDを渡してもvalidateを通らないようにしておいて、一時IDはクライアントとGAE側で同じ生成アルゴリズムを用いて正当性を検証する。 というような事を考えています。 きっとまだ抜け穴はありそうなので引き続きデータ保護を検討してみます。 少し前にSimejiの騒動があったので、どう不正なアクセスからコンテンツのデータを保護するかという事が気になりました。 普段はクライアント側を書いていてサーバー側は初心者なのですが、万一参考になればと思って先の独り言の様な文章も投稿させて頂いた次第です。 スレ汚し失礼しました。 >>336 javascriptを使って認証cookei与えればjavascriptが走らない汎用Botは弾けるよ ただ、そのサイト狙い撃ちでスクレイピングしてくるやつなら当然ソースハックして 対策はしてくるだろうけどそれもちょっと難読化して暗号化ロジック隠せば 半分くらいのBot作者の手には負えないかも でも検索エンジン弾いちゃっていいのかってのはユーザビリティ考えるとどうなの?って感じ ユーザーがそこまで望むならメールフォーム使ったユーザー登録くらい作るよね >>336 ユーザー登録は google account で代用出来る 不正なアクセスあったらそのアカウントを自分の DB でブラックリスト化する 自分のみ利用したいんですが どこで設定するのでしょうか? 自分のみなら app.yaml で require: administrator だったかな PC向けページしか無くてスマホからの利用は不便なので、 中継サーバーでスマホ向けにするような Webアプリとか作ってみたいんだけど。 ちなみに PC向けページはレコーダーのDIGA、 LAN内のサーバーは rep2 動かしてる Win版 XAMPP、 アクセスしたい端末は iPod touch。 pythonスレで誘導されてきました。 本文コピペになってしまいますが、以下、ご教示頂けないでしょうか。 宜しくお願い致します。 http://yono.cc/python/gae/ こちらを参考にして、HelloWorldを表示するだけのWebサーバを作りました。 上記ページの「webapp フレームワークで Hello World を書き直してみる。」のところに掲載されているソースコードをまるまる利用しています。 しかし、実際にブラウザでアクセスすると以下の様なエラーが出るのですが、これは何が原因なのでしょうか・・・? Hello worldすら出来ないとかもうどんだけダメなんだ自分・・・ ERROR    2014-06-17 07:20:34,551 wsgi.py:262] Traceback (most recent call last):   File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 239, in Handle     handler = _config_handle.add_wsgi_middleware(self._LoadHandler())   File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 301, in _LoadHandler     raise err ImportError: <module 'test' from '/中略/channelapitesttest/test.py'> has no attribute app INFO     2014-06-17 07:20:34,555 module.py:639] default: "GET / HTTP/1.1" 500 - >>348 ソースやyamlの何処かに'test.app'ってのがありそうだな appって拡張子があるような罠 urlfetchでwait()をコールしないで通信が終わってるか確認する方法ってある? asyncで並列で通信して早く終わったやつから先にwait()呼びたいのだけど。 168 デフォルトの名無しさん [sage] 2014/07/03(木) 17:10:36.81 ID:/QLPOJJ3 Be: Dartプログラミング言語をGoogleのApp Engineがサポート…ついにサーバ言語としても位置づけ http://m.jp.techcrunch.com/2014/07/01/20140629googles-dart-programming-language-is-coming-to-the-server/ これでW3Cは無理が有る様に思うが、きっかけにはなりそう。 あまり使いたいと思わせる要素は少ないな。あるのは数の力かな。 多分この辺りの言語戦争がWebKit内で有って分裂したんじゃ無いだろうか。表面は違うが。 てっきりGoと住み分けさせるのかと思ってたけど、割と普通に被らせちゃうのね ここでこちらに誘導されたので http://peace.2ch.net/test/read.cgi/tech/1400479217/553 covendy を使いGAEにてデプロイして、htmlフォームから入力されたデータを一行ずつテキストファイルに書き込む処理をしているのですが、 処理に時間がかかり、deadlineを起こしてしまいます。 そこで Task Queue を使おうと思うのですが、使い方が分かりません。 なんらかのリンクを作り、そこにpostすることは分かったのですが、formからデータを取得するためにもう def post(self)は使っていますが、その処理でもTask Queue は使えるのでしょうか? また取得したデータの受け渡しは、どのように行っていますか? GAE じゃなくて Google Apps Script 使った方が良いかもね >>356 今のform受けクラスをtaskqueueに使って、そこにform受けて丸投げの皮をかぶせるのが 一番工数少ないかな テキストファイルだと壊れる可能性あるけどねー、ホームページのカウンターとか懐かしいな webapp2のURLルーティングにCoC機能を付けたいんだけど どういう方法がベストプラクティスかな myapp/ application/ model/ view/ controller/ app.yaml main.py ここのcontroller/フォルダに foo_handler.py bar_handler.py bazz_handler.py があったとすると "/foo"はfoo_handerに ”/bar"はbar_handerに "/bazz"はbazz_handerに スクリプトに明示的に記述せずとも自動的に設定されるようにしたい インデックスの数の上限がなくなってますね? 以前200と言われてて 英文の記事で5000と言及してるトピックがあって 今日本家のDatastore Indexesにも明確な数字の言及はなくなってます A,B,C3つのプロパティのあるエンティティをすべての組み合わせで検索するには AB,BC,CA,ABCのインデックスが必要だと思ったら違うっぽいね ABCのインデックスも必要ない どういう時に必要なんですか? カスタムインデックスの数の上限と、 1エンティティから発生するインデックスのエントリ数の上限は別物だよ。 >>>a = ['ringo','リンゴ'] >>>print a [{'ringo':'\xe3\x82'}]とか\u73feとかで表示されますが、これを日本語でちゃんと、'りんご'と表示させるにはどうすればいいですか? また、階層が深いと[<ringo: ringo object>]のようになったりもしますがこれの対処法も教えてもらえないでしょうか? >>369 これ質問者じゃない別の陰険な奴がわざとが貼りまくってるんだぞ 質問させて GAEにてDjango使ってWebサイトって公開できるんだよね? 料金はAWSの方が安いとか書かれてたけど 無料でどこまで出来るのかな? >>372 Django使ってWebサイトって公開できる 無料でやれる範囲一日200万PV程度(データ量なども関係する) 補足:無料枠はページの応答速度が重要でさっきのPVは60ms程度 Django使うと1000msくらいはかかるかも よって目安は12万PV/日 wordpressがpythonになってくれればなあ >>374 応答速度1秒って遅くね レスポンスは500msec以内に返さないとサクサク感がないって 誰かが言ってたぞ GAEでDjango-nonrelを動かそうとしています。 Celeryで非同期処理がしたいのですが、RabbitMQは使えるでしょうか? >>385 遅くなりましたがレスありがとうございます。 なかなかうまく行きませんし今回はTaskQeue使います。 あんまり詳しくないので分からんのだが Datastoreの呪縛から解き放たれると解釈していいのかな Elasticsearchによる全文検索や、MongoDBとか使えちゃったりする上に GAEの特徴であるオートスケールはそのまま、ということでいいのかな 松尾さん Docker対応はGAE以外にもAWSもやってるから 結局は安くて使いやすいほうが勝つ、コモディティ商材になったってことかな 今Google Developers Console重くね? おれだけかな?? 今GAEでtweepy使えます? The Socket API will be enabled for this application once billing has been enabled in the admin console って言われてこれを解決できないのですが分かる人居ませんか? GAEをよく知らない通りすがりだけど 管理コンソールでビリング(支払い設定?)を有効にしたらSocket APIが有効になるよって書いてある うちではTweepy使えてるけど、2年前のバージョンだからなぁ。 今の見たらHTTPリクエストがhttplibからrequestsに変わってるんだね。 ちょっとググってみたけど、requestsの最近のバージョンがGAEでは動かなくて 2.1.0にするといいっぽい。 久しぶりにダッシュボード見たけど、Backendも廃止になるんだな。 いまだに2.5のまま放置してるけど、そろそろ2.7に移行するかなw うちも未だに2.5のまま 以降準備はほぼ整ってるけど全責任追って移行するのが心理的にめんどくさい とうとうM/S止めるってメール来たね てか来てた? If you don’t take any action these applications will be shutdown on July 6, 2015 詳細 Master-Slave Datastore Service Turndown https://cloud.google.com/appengine/docs/deprecations/ms_datastore こうしてみると Google は MS より対応ひどいな 仕事じゃ怖くて使えんわ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる