Open Chri opened 12 years ago
+1 , this happens to me also when using tornadio2, any work around?
+1
+1
Seems like unsubscribing is done asynchronously and the connection is closed before unsubscribing finishes which includes sending messages to the subscriptions.
My workaround is to delay disconnect():
self.client.unsubscribe('foo')
# Disconnect connection after delay due to this issue: https://github.com/evilkost/brukva/issues/25
t = Timer(0.1, self.client.disconnect)
t.start()
Not the nicest one though...
+1 ouch, a timer, the problem can still occur if it takes longer than the block period
def on_close(self):
self.pubsub.unsubscribe('foo')
def check():
if self.pubsub.connection.in_progress:
print 'Connection still in progress'
ioloop.IOLoop.instance().add_timeout(datetime.timedelta(0.00001), check)
else:
print 'Disconnecting'
self.pubsub.disconnect()
ioloop.IOLoop.instance().add_timeout(datetime.timedelta(0.00001), check)
This should work. It makes sure the connection is ready to be disconnected without blocking. It also might work on the disconnect method in brukva but I'm not sure the implications. It might be tweaked by forcing the disconnect after a certain amount of time or iterations.
Same. Probably it isn't bug but feature? Will someone fix it in source? Code below doesn't look well but it works.
def on_close(self):
def after_unsubscribe(a):
self.client.disconnect()
self.client.unsubscribe('some_channel', after_unsubscribe)
When I close the WebSocket my python program prints out the following error:
ERROR:brukva.client:Connection lost Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/brukva/client.py", line 926, in listen data = yield async(self.connection.readline)() GeneratorExit: Connection lost Exception AttributeError: "'ConnectionError' object has no attribute 'body'" in <generator object listen at 0x90a798c> ignored
Although the connection to redis gets closed I still receive that error.
Here a snippet of the code I use: