問題タブ [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.

0 投票する
1 に答える
2650 参照

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プロセスを再起動するか、リロードする必要があります。モジュール: "(ここから)。

誰かがこれを行うための適切な方法を知っていますか?

0 投票する
1 に答える
261 参照

python - twisted.web に相当する threading.local?

非同期環境でthreading.localは、複数のコンテキストが 1 つのスレッド内に共存する可能性があるため、 がコンテキスト ローカルであることが保証されなくなりました。ほとんどの非同期フレームワーク (gevent、eventlet) はget_current_context()、現在のコンテキストを識別する機能を提供します。threading.local「greenthreads」または他のフレームワーク固有のコンテキストに対してローカルになるように、モンキーパッチを適用する方法を提供するものもあります。ねじれたドキュメントでそのような機能を見つけることができません。どうすればいいですか?

0 投票する
1 に答える
2429 参照

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?

0 投票する
2 に答える
509 参照

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 つ教えてくれるかもしれません。

0 投票する
1 に答える
5073 参照

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())。

0 投票する
2 に答える
5114 参照

python - twisted.web でうまくいかないファイルのアップロードを行うにはどうすればよいですか?

検索して検索しましたが、適切な方法でファイルを twisted.web アプリケーションにアップロードする方法が見つからないようです。

現在、ファイルのアップロードをリソースに投稿するrequest.args['file']と、ファイルの内容が入力されたリストである変数が生成されます。ファイルに関する情報を取得する方法が見つかりません: MIME タイプ、ファイル名、ファイルサイズ (単に の文字列の長さを取得する以外にargs['file'][]) など。

twisted.web2 の方がファイルのアップロードに優れていると読みました。ただし、それがどれほど優れているか、またはtwisted.web2を使用してtwisted.webアプリケーションでファイルのアップロードを処理する方法はわかりません。

助言がありますか?これは私を狂ったように悩ませています-ああ、私はリクエストヘッダーを見て、実際には何の重要性も見つけられませんでした. Twisted でのファイル アップロードに関するメタ情報を取得するにはどうすればよいですか?

また、

リクエスト オブジェクトから生の HTTP リクエストを取得するにはどうすればよいですか? 出来ますか?

0 投票する
3 に答える
5040 参照

python - このHTTPPOSTリクエストを適切に解析していますか?

まず、twisted.webフレームワークを使用しています。Twisted.webのファイルアップロードは、私が望んでいたように機能しませんでした(ファイルデータのみが含まれ、他の情報は含まれてcgi.parse_multipartいません)、私が望むように機能しません(同じこと、twisted.webこの関数を使用します)、機能cgi.FieldStorageしませんでした(CGIインターフェイスではなくツイストを介してPOSTデータを取得しているため、私が知る限り、FieldStoragestdinを介してリクエストを取得しようとします)、混乱して激怒しtwisted.web2たため、機能しませんでしたDeferred(私が欲しいものには複雑すぎます)。

そうは言っても、私は自分でHTTPリクエストを解析してみることにしました。

Chromeを使用すると、HTTPリクエストは次のように形成されます。

これは常にそれが形成される方法ですか?私はそれを次のような正規表現で解析しています(コードの壁を許してください):

(注:コードの大部分を切り取って、関連性があると思われるものだけを表示しました(正規表現(ええ、ネストされた括弧)、これは私が作成__init__したクラスのメソッド(これまでのところ唯一のメソッド)Uploadsです。完全なコードは改訂履歴に表示されます(括弧が一致していなかったと思います)

境界に達するたびに、新しい「ファイル」辞書を開始することがわかります。私はヘッダーを解析していると言うように設定in_headerしました。True空白行に達したら、それを-に切り替えますが、そのフォーム値にが設定されているFalseかどうかを確認する前ではありません-そうでない場合は、ファイルのアップロードのみを探しているため、設定します。Content-Typeignore_current_file

ライブラリを使用する必要があることはわかっていますが、ドキュメントを読んだり、プロジェクトでさまざまなソリューションを機能させようとしたり、コードを合理的に見せたりすることにうんざりしています。この部分を乗り越えたいだけです。ファイルのアップロードを使用してHTTPPOSTを解析するのがこれほど簡単な場合は、それを使い続けます。

注:このコードは今のところ完全に機能します。特定のブラウザからのリクエストを抑制/吐き出すかどうか疑問に思っています。

0 投票する
1 に答える
909 参照

python - ねじれた Web getPage、2 つのクラスの 2 つのクライアント、2 つの間のイベントの管理

私はtwisted.webで、Webサーバーからデータを受信して​​別のサーバーに送信するブリッジプログラムを作成しようとしています。したがって、便宜上クラスにラップした2つのgetPageアプリケーションを使用しています。クラスにはすべてが含まれていますコールバックとクライアントの「ルーチン」.. 1) 認証 2) データの受信 3) データの送信、これはすべて循環的に行われ、両方のクライアントで完全に機能します!!

私が今計画しているのは、2 つを統合することです。これは、それらを処理するために、クラスの外部でいくつかのコールバックを作成する必要があることを意味します。

client1<--->main<--->client2

これどうやってするの?

私はねじれたgetPageを使用しています

2つのクラスのうちの1つを投稿します

クラス外でコールバックを作成するにはどうすればよいですか?

私は自分自身を表現できたことを願っています = D

たくさんのサンクス

0 投票する
1 に答える
313 参照

python - クライアントソケットの bindaddress を設定するために twisted.client.getPage をオーバーロードしています!

過去10時間、私はこれを達成しようとしてきました:

標準ライブラリを使用したブロッキング httpclient の変換...それのねじれたノンブロッキング/非同期バージョンに変換します。

10 時間後...彼らの API を使ってスコアを付けました。素晴らしいフレームワークですが、ソケットを別のインターフェースに設定するだけでは少し圧倒されるようです。

Pythonの教祖はこれに光を当てることができますか、そして/または私を正しい方向に送ることができますか? または私が見逃した可能性のあるドキュメントはありますか?ありがとう!

0 投票する
1 に答える
3263 参照

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 のプロキシを使用するため)。