No Error handling when sockets fail
I'm sending frames of about 50 tokens for remote fetch notifications. I sometimes get a SIGPIPE when sending notifications in close succession. The self._connection().write() crashes with the following:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 1082, in run
self.function(*self.args, **self.kwargs)
File "listen.py", line 50, in sendNotification
apns.gateway_server.send_notification_multiple(frame)
File "/home/dev/backend/apns.py", line 559, in send_notification_multiple
return self.write(frame.get_frame())
File "/home/dev/backend/apns.py", line 267, in write
return self._connection().write(string)
File "/usr/lib/python2.7/ssl.py", line 272, in write
return self._sslobj.write(data)
error: [Errno 32] Broken pipe
Maybe its better if its wrapped in a try:except: and a _disconnect()/_connect() is subsequently called?
having the same issue, sometimes alternating with [SSL: BAD_WRITE_RETRY] bad write retry (_ssl.c:1625)
Not sure if they stem from the same source. Would be nice if a fix was proposed for this?
Is there a workaround for this problem? I'm seeing it as well with send_notification_multiple.
I wonder if some requests succeed and others fail or is it always fail?
I think my next step in debugging this is to try to confirm the possibility that this relates to having a large number of tokens.