2016-09-16 24 views
0

私はgithubのthis exampleに示すように、Autobahn-0.16.0をApplicationRunnerとともに使用しようとしています。autobahn pythonで例外を発生させるにはApplicationSession .__ init__?

join()が呼び出された後に例外を発生させると、すべて正常に動作します。ただし、__init__メソッドで例外が発生した場合は、AttributeError: 'ApplicationRunner' object has no attribute 'log'となります。この仕事をする方法があるのだろうかと思います。

次のコードは、問題を再現する例です。私は__init__raiseを-コメント

#!/usr/bin/python3 

import txaio 

import asyncio 
from asyncio import coroutine 
from autobahn.asyncio.wamp import ApplicationSession 
from autobahn.asyncio.wamp import ApplicationRunner 

class SessionWithException(ApplicationSession): 
    def __init__(self, config): 
     ApplicationSession.__init__(self, config) 
#  raise Exception('Some error exception') 

    def onConnect(self): 
     print("Connecting...") 
     self.join(self.config.realm) 
     raise Exception('Good exception') 

    @coroutine 
    def onJoin(self, details): 
     print("Joining...") 
     self.disconnect() 

    def onDisconnect(self): 
     print("Disconnecting...") 
     asyncio.get_event_loop().stop() 

def main(): 
    txaio.start_logging(level='error') 

    runner = ApplicationRunner("wss://api.poloniex.com:443", "realm1") 
    runner.run(SessionWithException) 

if __name__ == "__main__": 
    main() 

、私はこのエラーを取得する:

Traceback (most recent call last): 
    File "/usr/lib/python3.4/site-packages/autobahn/wamp/websocket.py", line 60, in onOpen 
    self._session = self.factory._factory() 
    File "/usr/lib/python3.4/site-packages/autobahn/asyncio/wamp.py", line 125, in create 
    self.log.failure("App session could not be created! ") 
AttributeError: 'ApplicationRunner' object has no attribute 'log' 

答えて

0

私はそれがアウトバーン自体の微妙なバグだと信じています。 ライブラリは、すべてのランナーの属性を早めに初期化する必要があります。 問題を提出してくださいbug tracker

+0

ありがとうございました!私はそれが事実かもしれないと想像しましたが、オートバイの初心者で、私は確信がありませんでした。私はアドバイスとして、[issue](https://github.com/crossbario/autobahn-python/issues/737)に報告しました。 – user1096555

+0

Plsについては、https://github.com/crossbario/autobahn-python/issues/737#issuecomment-248520738をご覧ください。 – oberstet

関連する問題