2

こんにちは、みなさん!

YouTube からデータを取得できるようにする pafy という python モジュールを使用しています。これを使用しているときに、特定の時間にインターネットが切断され、エラー応答は返されませんでしたが、プログラムがハングしました。インターネットに再接続したとき、コードが再開されず、再起動する必要がありました。私はそれについて知らず、それを見る前に数時間そこにぶら下がっていたので、これはちょっと面倒でした. 再発防止に努めたいと思います。

私はそれを絞り込み、この小さなコードでハングを何度も再現することができました. また、コードのトレースを実行して、ソケット モジュールにアクセスするときにハンドリングすることを確認しました。

あなたはそれを実行し、それが「今」印刷されたら、インターネットを切断します。数回試行する必要があるかもしれませんが、複数のオカシアンでは同じ場所に着陸しました。

モジュール名: ソケット、関数名: readline

これが私が使用しているサンプルコードです。
python -m trace --trace test_code.py

import time
import pafy

time.sleep(5)
print "now"
hello = pafy.new('https://www.youtube.com/watch?v=1jJ9sQTX4EE')

適切なタイミングで切断すると、ハングし続ける場所がここにあります。
適切な場所で切断されない場合、接続エラーでタイムアウトします (これは、どこでも実行したいことです...)

ここに画像の説明を入力

どうしたものか知っている人がいたら教えてください。そうでない場合、将来のハングを回避するためにできる回避策はありますか?


編集:この男は問題に遭遇して修正したようです。http://davejingtian.org/2014/11/14/python-hacking-urlopen-timeout-issue/ 皆さんはどう思いますか?


4

0 に答える 0