Проблема автобана с веб-сокетом при работе с Twistd с использованием файла TAC

У меня есть сервер WebSocket, реализованный с использованием автобана WebSocket Framework с использованием витой. Сервер WebSocket работает нормально, когда программа работает с python. Но если я запускаю это с помощью twistd server runner, создавая tac-файл как twisted service, я получаю следующую ошибку на сервере, когда любой клиент пытается установить соединение и происходит сбой рукопожатия.

2015-12-08 07:17:56,022 - CRITICAL - twisted.publishToNewObserver() 154 Unhandled Error Traceback (most recent call last): File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/python/log.py", line 84, in callWithContext return context.call({ILogContext: newCtx}, func, *args, **kw) File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/internet/posixbase.py", line 597, in _doReadOrWrite why = selectable.doRead() --- <exception caught here> --- File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/internet/tcp.py", line 1067, in doRead protocol = self.factory.buildProtocol(self._buildAddr(addr)) File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/twisted/internet/protocol.py", line 135, in buildProtocol p = self.protocol() File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/autobahn/websocket/protocol.py", line 665, in __init__ self.is_closed = txaio.create_future() File "/opt/nrgi-ws/nrgi-ws-virtual-env/local/lib/python2.7/site-packages/txaio/_unframework.py", line 43, in _throw_usage_error "To use txaio, you must first select a framework " exceptions.RuntimeError: To use txaio, you must first select a framework with .use_twisted() or .use_txaio()

4 ответа

Я нашел ту же проблему сегодня. Вы должны понизить txaio до версии 1.1.0

Вот мой список пипсов autobahn (0.10.9) autobahntestsuite (0.7.3) Twisted (15.4.0) txaio (1.1.0) zope.interface (4.1.3)

AutobahnTestSuite был только что обновлен и исправляет эту проблему:

автобан (0.10.9) автобантестуит (0.7.4) витая (15.5.0) txaio (2.1.0)

Можете ли вы попробовать с мастером автобана? Это должно быть исправлено, но пока нет выпуска, содержащего это исправление (dd1cff8f9480a125e510108482bfaf5b9eedc916).

Вы можете установить мастер, как это: pip install https://github.com/crossbario/autobahn-python/archive/master.zip

Эта проблема не происходила в моей системе Ubuntu. У меня была эта проблема в ec2 экземпляре с Machine Image Amazon Linux AMI. Кажется, txaio не может обнаружить доступную витую структуру. Другое исправление, отличное от @helder.vasc, упомянутое выше, заключается в явном указании фреймворка. Добавление этого ниже в tac-файл решило проблему:

import txaio txaio.use_twisted()

Обратите внимание, что погода - это идеальный способ решить эту проблему.

Другие вопросы по тегам