Почему перестал работать pysher websocket и нужен перезапуск вручную - PullRequest
0 голосов
/ 16 октября 2018

Я использую библиотеку pysher для подключения к веб-сокету.Время от времени я вижу, что я не получаю никаких данных, и у меня есть эта ошибка в моем journalctl:

Connection: Received error 4201
Exception in thread PysherEventLoop:
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.6/dist-packages/pysher/connection.py", line 102, in run
    self._connect()
  File "/usr/local/lib/python3.6/dist-packages/pysher/connection.py", line 126, in _connect
    self.socket.run_forever(**self.socket_kwargs)
  File "/usr/local/lib/python3.6/dist-packages/websocket/_app.py", line 207, in run_forever
    raise WebSocketException("socket is already opened")
websocket._exceptions.WebSocketException: socket is already opened
Failed send ping: socket is already closed.

Мой скрипт выглядит так:

import pysher

# some code like logger, etc...

def  my_func(*args, **kwargs):
    print("processing Args:", args)
    print("processing Kwargs:", kwargs)

def connect_handler(data):
    channel = pusher.subscribe('mychannel')
    channel.bind('myevent', my_func)

try:
    pusher = pysher.Pusher(req_appkey)
    pusher.connection.bind('pusher:connection_established', connect_handler)
    pusher.connect()

    logger.info('Connection sucessfully established.')

    while not killer.kill_now:
        time.sleep(1)

except Exception as e:
    logger.info('Unexpected error occurred.')
    logger.info('Error: ', e)

Я запускаю его как службу linux, он должен запускаться автоматически, когда скрипт не запущен.Но даже когда эта ошибка возникает в моем journalctl (не перехвачена моим оператором try), цикл сценария все еще работает.

Что означает эта ошибка, как мог мой веб-сокет уже открываться и закрываться одновременно?Кто-нибудь может объяснить это и помочь мне найти решение?

...