2012-03-13 11 views
1

私はlibtorrentのpythonバージョンを使用します。私は多くのファイルと長い時間のための急流のセッションを実行すると、エラーでクラッシュ:スレッド内に関数をラップし、重大なエラーを無視する

terminate called after throwing an instance of 'boost::lock_error' 
    what(): boost::lock_error 

ので、私は別のスレッドに急流に関連する機能をラップし、それがクラッシュしたとき、それは殺すだろうと思いました(全体ではなくアプリの)単なるスレッド:

from threading import Thread 

class TWrapper (Thread) : 
    # ... 
    def run(self): 
     try: 
      run_torrent_stuff() 
     except: 
      # print message 
      pass 


t = TWrapper() 
t.run() 
t.join() 
# check if all OK with t, if not - restart again 

私は図書館がクラッシュした場合、スレッドが死ぬだろうと私はメインループでそれをjoinだろうと思いました。しかし、libtorrentクラッシュは、すべてのアプリケーションが死ぬとき:(

エラーがスレッドの外にエスカレートなぜ?

通常であれば

+0

'スレッドからスレッドにエスカレートする理由は?' - おそらく例外が他のスレッドで発生している可能性があります。 libtorrent内部スレッド/プール? –

答えて

2

libtorrentは、例えば、(実生活)、質問が一般的です)スレッドがクラッシュすると、別のプロセスでlibtorrentを実行しないようにするには、プロセスクラッシュが発生します。

+0

'mutiprocessing.Process'クラスを試しましたs、待って見てみましょう... –

関連する問題