私はTLSを使用する必要のあるPythonでHTTPクライアントを持っています。暗号化された接続を行うだけでなく、 リモートマシン(証明書の発行者など)から情報を取得するために、 だけでなく、私は多くのHTTPサーバーへの接続を にする必要があります。しばしば悪い動作をするので、私は絶対に にタイムアウトが必要です。 TLS以外の接続の場合、 mysocket.settimeout(5)
は私がしたいことをします。多くのTLS Pythonモジュールの中でTLS接続(タイムアウトあり)
:
gnutls.errors.OperationWouldBlock: Function was interrupted.
python-opensslは、同様の問題があります:
がpython-gnutlsが、それは、非ブロッキングソケットを使用 ためのソケット上のsetTimeout()を使用することはできません。
OpenSSL.SSL.WantReadError
標準ライブラリのSSL moduleは、Pythonでは機能しません2.5。
TLSliteのような他のライブラリは、明らかに証明書のメタデータを にアクセスできません。
プログラムはスレッド化されているため、信号は使用できません。私は詳細な HTTPダイアログボックスのコントロールが必要なので、urllib2のような標準ライブラリは使用できません。
背景:これは 調査プロジェクトDNSwitnessです。関連するスレッド:Timeout on a Python function callおよびHow to limit execution time of a function call in Python。
しかし、それはプロセッサのための非常に高価ビジーウェイトのいくつかの並べ替え、ではないのですか? – bortzmeyer
あなたはいつもスリープを挿入したり、スケジューラを稼働させたり、何か他のことをすることができます。ループの中で長い時間を費やしているかのように、いいサーバはかなり速く応答しようとします。 –