2011-09-22 8 views
5

私は通常はブラウザ経由で実行することになり、操作を実行するためにurllib2のを使用しています(Webアプリケーションの一部として)、いくつかのテストコードがあります。別のページへvirtualenvの間の説明できないUrllib2の問題。

  • ログイン
  • リモートWebサイトに移動します
  • は3台の異なるマシン、パイソンの異なるバージョンが、まったく同じで、すべての(--no-のsite-packagesで)私は4つの別個の、きれいなvirtualenvsを作成しました

形で充填することにより、POSTを実行しますパッケージ(pip要件ファイル経由)、およびコードo nlyは私のローカル開発マシン(2.6.1と2.7.2)の2つのvirtualenvで動作します - 私のプロダクションVPSのどちらでも動作しません

問題が発生した場合、私は正常にログインし、正しいページですが、フォームを送信すると、エラーが発生したことをリモートサーバーが返信します。アプリケーションサーバーエラーページ(「リクエストを完了できませんでした」)であり、Webサーバーエラーではありません。

  • 私は正常にログインし、2ページ目に操縦することができるので、これはセッションやクッキーの問題ではないようです - 私は上の操作を行うことができますので、それは、最終的なPOST
  • に、特定のです特定のマシンで同じヘッダーとデータを使用している場合は、別の会社から借りた2つの別個のVPSでコードを試しているので、これは私が要求/投稿しているものでは問題ありません。
  • VPS物理環境に問題がある
  • コードは2つの異なるpythonバージョンで動作するため、私はそれがincompaであるとは想像できません不潔な問題

なぜこれがうまくいかないのか、私は完全に迷っています。私は問題がどんなものになるのか分かりませんから、もう一度やり直しました。

私は、リモートサーバが気に入っていないVPSから来る最終的なPOSTと何かが関係していると思いますが、何ができるのか分かりません。私は、URLlibのフードの下で何かが起こっているように感じて、リモートサーバがその返信を嫌うようにしています。私は私の作業ローカルコピーであり、それがリモートで作業しないので、由来すると何かでなければならないとして、VPS上でまったく同じPythonのバージョン(2.6.1)をインストールした

EDIT VPS。これはどのようにHttpリクエストに影響しますか?それは何かより低いレベルですか?

+0

VPSまたは対象のWebサイトでファイアウォールが動作していますか?クッキーを使用していますか?そうであれば、クッキーは本番環境で正しく書かれていますか? –

+0

いいえ、私は2つの別々のVPSで動作させていますが、いずれも動作しませんが、ファイアウォールの背後にいるとは思いません。私はcookielibでクッキーを使用していますが、クッキーが最初の2つの操作(ログインとページ変更)のために動作するため、問題はないと思います。 –

答えて

0

私が知っているように見えます。なぜの問題が起きていましたか?しかし、それは100%理由ではありません。

それは第三の要求を行う前に、第二の要求(別のページから移動)を送信した後、私は単純にサーバー待機(time.sleepを())しなければならなかった(で充填することにより、POSTを実行します) 。

サードパーティ製サーバの状態や、URLlibで何らかの問題が起きたことが原因であるのかどうか分かりません。それは私の開発マシンで動作するように思えた理由は、おそらくコードを実行しているサーバーの速度が遅かったからでしょうか?

1

あなたはurllib2のためにデバッグレベル= 1を設定してみてください可能性があり、それが思い付くものを参照してください:

import urllib2 
h=urllib2.HTTPHandler(debuglevel=1) 
opener = urllib2.build_opener(h) 
... 
+0

私は細かい歯の櫛でそれらを通過しました!私はまた、働くものを非働くものと比較しました。それらはかなり同じです。私は編集していくつかの例を載せます –

1

これは、暗闇の中で、総ショットですが、あなたのVPSの64ビットおよび自宅のコンピュータ32でありますビット、またはその逆?おそらく何かのデフォルトのサイズや精度の差がであると、サーバーを驚かせるかもしれません。

Webサーバーが使用しているソフトウェアスタックに関する情報を調べることはできますか?

+0

良い提案ですが、残念ながら彼らは同じです! –

1

私はurllib2(ZimbraのREST APIを使用しています)と同様の問題があり、最後はpycurlに切り替えて成功しました。

login/navigate/postの操作については、Mechanizeが便利で使いやすいとわかりました。たぶんあなたはそれをショーにすることができます。

+0

これはこの段階で唯一の選択肢かもしれないと思います。私はそれを動作させるために考えられるすべてのものを試しましたが、それはあいまいな互換性の問題だとしか想像できません。私は実際には優れている機械化を使用していたが、残念ながら私はそれが同じ問題が発生することを意味するUrllib2の上に座っていると信じています。 –

関連する問題