問題タブ [twisted.web]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - twisted.webサーバーのインポートの問題
私はtwisted.webを使い始めたばかりで、Pythonモジュールを.rpy
スクリプトにインポートするのに問題があります。
でC:\py\twisted\mysite.py
、私はこれを持っています:
そして、でC:\py\twisted\index.rpy
、私はこれを持っています:
twistd -n web --port 8888 --path C:\py\twisted
コマンドプロンプトで実行し、サーバーが正常に起動しました。しかし、私が要求したときlocalhost:8888
、ImportErrorから発生した(巨大な)スタックトレースを取得しました:
<type 'exceptions.ImportError'>: No module named mysite
インタプリタからモジュールをインポートできますがindex.rpy
、Pythonスクリプトとして実行しただけでは、インポートエラーは発生しません。このテーマに関するドキュメントは少しあいまいで、「ただし、Pythonモジュールでリソースサブクラスを定義する方がよい場合がよくあります。モジュールの変更を表示するには、Pythonプロセスを再起動するか、リロードする必要があります。モジュール: "(ここから)。
誰かがこれを行うための適切な方法を知っていますか?
python - twisted.web に相当する threading.local?
非同期環境でthreading.local
は、複数のコンテキストが 1 つのスレッド内に共存する可能性があるため、 がコンテキスト ローカルであることが保証されなくなりました。ほとんどの非同期フレームワーク (gevent、eventlet) はget_current_context()
、現在のコンテキストを識別する機能を提供します。threading.local
「greenthreads」または他のフレームワーク固有のコンテキストに対してローカルになるように、モンキーパッチを適用する方法を提供するものもあります。ねじれたドキュメントでそのような機能を見つけることができません。どうすればいいですか?
python - Basic HTTP Parsing Using Twisted
I am a newcomer to the Python and Twisted game so excuse the ignorance I will likely be asking this question with. As a sort of first program, I am trying to write a basic HTTP server using twisted.web.sever which would simply print to screen the HTTP request, and then print to screen the HTTP response. I am trying to print the entire message. Here is what I have so far:
So far, I am having success printing the request. What I want to know is where I can access the raw response data, not just the textual message. Also, if I wanted to start parsing the request/response for information, what would be the best way to go about doing that?
Edit: I'm also new to stackoverflow, how do I get this code to display properly?
python - twisted.web で使用するテンプレートおよびフォーム処理ツールキット
タイトルが示すように、twisted.web でフォーム処理 (検証/レンダリングなど) を自動化するのに役立つものを探しています。また、それと一緒に使用するのに適したテンプレート ツールキットも探しています。
テンプレートに関しては、python にはそれを行うライブラリがたくさんあるので、それほど問題ではありません。私は次のことを検討していました:
- ネボー。まあ、それはテンプレート ツールキットだけでなく、私が必要とするかもしれないし、必要としないかもしれない他の多くのものでもあります。それはまた、Twisted の非同期の性質とうまく機能します (私の知る限り、それが良いか悪いかに関係なく、それを使ってインクリメンタル レンダリングを行うことができます)。
- 神社2。私はまだ使っていませんが、多くの人に勧められているようです。私はそれについて読んだことがありますが、それはまともなツールキットのようです。
- げんし。前のものと同じ
- Django のテンプレート エンジン。私はそれをかなり使ってきました。いくつかの欠点がありますが、まあ、うまくいきます。これは django プロジェクトではないので、django のコンポーネントに限定する必要はありません。
- 地獄、理論的には xslt を使用して xhtml を生成できます (しかし、私はしません:P)。プロジェクトが扱うほとんどすべてのデータは xml です。
フォーム処理に関して言えば、私がよく知っている唯一の Python Web フレームワークは django (実際にはよく知っています) であり、ここで何を考慮すべきかよくわかりません。
nevow にはある種のフォーム処理が組み込まれているようですが ( formless と呼ばれます)、それがどれほど優れているかはわかりませんし、ドキュメント (ソース以外) や使用例 (完全に自明なもの以外) も見つかりませんでしたトゥロリアルで)。
私が検討していたもう1つのオプションは、djangoのフォームを「ボルトで固定」することです。これは、フォームが実際にはdjangoの他のものと結合されていないため、それらを個別に使用できるためです。でも、できればやりたくないですよね。
既存の twisted.web プロジェクトを持っている人が、ヒントを 1 つか 2 つ教えてくれるかもしれません。
python - Twistedが、リクエストを呼び出していないのにrequest.finish()を2回呼び出していると考えるのはなぜですか?
これは私がTwisted.webで抱えている厄介な問題です。基本的に、Makoテンプレートから継承しtwisted.web.resource.Resource
、いくつかのデフォルトのものを追加するクラスがあります。
次に、問題をこの小さなクラス(テストした)に絞り込み、以下から継承するリソースを記述しPage
ます。
request.finish()
それ以外の場合、関数の最後の行でない場合は、そのreturn
直後にあることに注意してください。
とにかく、私はこのクラスをサイトに追加し、/test
そこに移動すると、送信ボタンが表示されます。送信ボタンをクリックすると、コンソールに次のように表示されます。
ただし、これはページを初めて送信したときにのみ取得されます。毎回、それは大丈夫です。私はこれを無視するだけですが、それは私を悩ませてきました、そして私はそれがなぜこれをしているのか、そしてなぜページが最初に提出されたのかを理解することができません。オンラインで何も見つからないようですrequest.finish()
。コードにprintステートメントとトレースバックをドロップしても何も表示されませんでした。
編集
今朝request.finish()
、リソースに2行目を追加しようとしましたが、それでもエラーが1回だけ発生しました。リソース内で警告が表示されるのは1回だけだと思います。おそらく、プログラムの実行ごと、またはセッションごとに、わかりません。いずれにせよ、私はそれを次のように変更しました:
一度に2つのメッセージが届きました。2回終了したと言わずにリクエストをリダイレクトできない理由はまだわかりません(なしではリダイレクトできないためrequest.finish()
)。
python - twisted.web でうまくいかないファイルのアップロードを行うにはどうすればよいですか?
検索して検索しましたが、適切な方法でファイルを twisted.web アプリケーションにアップロードする方法が見つからないようです。
現在、ファイルのアップロードをリソースに投稿するrequest.args['file']
と、ファイルの内容が入力されたリストである変数が生成されます。ファイルに関する情報を取得する方法が見つかりません: MIME タイプ、ファイル名、ファイルサイズ (単に の文字列の長さを取得する以外にargs['file'][]
) など。
twisted.web2 の方がファイルのアップロードに優れていると読みました。ただし、それがどれほど優れているか、またはtwisted.web2を使用してtwisted.webアプリケーションでファイルのアップロードを処理する方法はわかりません。
助言がありますか?これは私を狂ったように悩ませています-ああ、私はリクエストヘッダーを見て、実際には何の重要性も見つけられませんでした. Twisted でのファイル アップロードに関するメタ情報を取得するにはどうすればよいですか?
また、
リクエスト オブジェクトから生の HTTP リクエストを取得するにはどうすればよいですか? 出来ますか?
python - このHTTPPOSTリクエストを適切に解析していますか?
まず、twisted.web
フレームワークを使用しています。Twisted.web
のファイルアップロードは、私が望んでいたように機能しませんでした(ファイルデータのみが含まれ、他の情報は含まれてcgi.parse_multipart
いません)、私が望むように機能しません(同じこと、twisted.web
この関数を使用します)、機能cgi.FieldStorage
しませんでした(CGIインターフェイスではなくツイストを介してPOSTデータを取得しているため、私が知る限り、FieldStorage
stdinを介してリクエストを取得しようとします)、混乱して激怒しtwisted.web2
たため、機能しませんでしたDeferred
(私が欲しいものには複雑すぎます)。
そうは言っても、私は自分でHTTPリクエストを解析してみることにしました。
Chromeを使用すると、HTTPリクエストは次のように形成されます。
これは常にそれが形成される方法ですか?私はそれを次のような正規表現で解析しています(コードの壁を許してください):
(注:コードの大部分を切り取って、関連性があると思われるものだけを表示しました(正規表現(ええ、ネストされた括弧)、これは私が作成__init__
したクラスのメソッド(これまでのところ唯一のメソッド)Uploads
です。完全なコードは改訂履歴に表示されます(括弧が一致していなかったと思います)
境界に達するたびに、新しい「ファイル」辞書を開始することがわかります。私はヘッダーを解析していると言うように設定in_header
しました。True
空白行に達したら、それを-に切り替えますが、そのフォーム値にが設定されているFalse
かどうかを確認する前ではありません-そうでない場合は、ファイルのアップロードのみを探しているため、設定します。Content-Type
ignore_current_file
ライブラリを使用する必要があることはわかっていますが、ドキュメントを読んだり、プロジェクトでさまざまなソリューションを機能させようとしたり、コードを合理的に見せたりすることにうんざりしています。この部分を乗り越えたいだけです。ファイルのアップロードを使用してHTTPPOSTを解析するのがこれほど簡単な場合は、それを使い続けます。
注:このコードは今のところ完全に機能します。特定のブラウザからのリクエストを抑制/吐き出すかどうか疑問に思っています。
python - ねじれた Web getPage、2 つのクラスの 2 つのクライアント、2 つの間のイベントの管理
私はtwisted.webで、Webサーバーからデータを受信して別のサーバーに送信するブリッジプログラムを作成しようとしています。したがって、便宜上クラスにラップした2つのgetPageアプリケーションを使用しています。クラスにはすべてが含まれていますコールバックとクライアントの「ルーチン」.. 1) 認証 2) データの受信 3) データの送信、これはすべて循環的に行われ、両方のクライアントで完全に機能します!!
私が今計画しているのは、2 つを統合することです。これは、それらを処理するために、クラスの外部でいくつかのコールバックを作成する必要があることを意味します。
client1<--->main<--->client2
これどうやってするの?
私はねじれたgetPageを使用しています
2つのクラスのうちの1つを投稿します
クラス外でコールバックを作成するにはどうすればよいですか?
私は自分自身を表現できたことを願っています = D
たくさんのサンクス
python - クライアントソケットの bindaddress を設定するために twisted.client.getPage をオーバーロードしています!
過去10時間、私はこれを達成しようとしてきました:
標準ライブラリを使用したブロッキング httpclient の変換...それのねじれたノンブロッキング/非同期バージョンに変換します。
10 時間後...彼らの API を使ってスコアを付けました。素晴らしいフレームワークですが、ソケットを別のインターフェースに設定するだけでは少し圧倒されるようです。
Pythonの教祖はこれに光を当てることができますか、そして/または私を正しい方向に送ることができますか? または私が見逃した可能性のあるドキュメントはありますか?ありがとう!
python - ねじれた Web プロキシ
私はこのコードを実行しています ( http://blog.somethingaboutcode.com/?p=155から):
これを取得して 127.0.0.1:8000 に移動すると、次のようになります。
localhost:8000 でプロキシを使用するように firefox、chrome、または Opera をセットアップするたびに、プロキシへの接続が確立されません (プロキシへの接続ではないため、どのページにも接続できなくなりました)。
それでも失敗し、ログを記録すると、localhost:8000 でプロキシを使用するように firefox を設定し、Web ブラウザから直接プロキシにアクセスしないと (firefox のアドレス バーに localhost:8000 と入力するなど)、この出力が得られます。
ただし、プロキシに直接アクセスすると、キーエラーが発生します。
また、スニッフィングについてはできません。Wireshark は localhost トラフィックを盗聴していないようで、fiddler 2 を使用すると、自分自身をプロキシとして設定し (したがって、プロキシ サーバーを使用しなくなります)、動作します (fiddler 2 のプロキシを使用するため)。