【发布时间】:2015-11-20 09:17:46
【问题描述】:
我正在使用PyAPNS 从 Python 连接到 APN。当作为独立脚本运行时,一切正常,推送消息得到传递。在 Google App Engine 开发环境中运行时,我收到以下错误:
Traceback (most recent call last):
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1102, in __call__
return handler.dispatch()
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "/usr/local/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/mnt/dev/OmegaHandler.py", line 173, in apns
apns.gateway_server.send_notification("70f23022d76aae0176844087c97f0ff068dd3e3686dbac086b8f82a630d0196a", payload)
File "/mnt/dev/apns.py", line 544, in send_notification
self.write(self._get_notification(token_hex, payload))
File "/mnt/dev/apns.py", line 273, in write
return self._connection().write(string)
File "/mnt/dev/apns.py", line 254, in _connection
self._connect()
File "/mnt/dev/apns.py", line 230, in _connect
self._ssl = wrap_socket(self._socket, self.key_file, self.cert_file)
File "/usr/local/lib/python2.7/ssl.py", line 911, in wrap_socket
ciphers=ciphers)
File "/usr/local/lib/python2.7/ssl.py", line 535, in __init__
if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM:
File "/mnt/dev/rsocket.py", line 225, in meth
return getattr(self._sock,name)(*args)
error: [Errno 22] Invalid argument
我使用this的答案来帮助解决开发环境中的“Permission denied”错误。同样,当独立运行时,使用完全相同的库和代码一切正常。该错误似乎来自getsockopt 被调用选项(1, 3)。我已经不知道了。
为什么这会发生在 开发环境 中,猴子用股票 Python socket.py 打补丁,而不是在独立脚本中发生。请不要回答我需要启用计费才能使用 Socket API,这仅在开发环境中发生。谢谢。
编辑: 这也发生在不同的机器和不同的服务器上(与 Google IP 地址范围之外的某些服务器的常规 SSL 套接字连接)。
【问题讨论】:
-
我不明白你暗示的答案可能是什么。那个问题或那个答案似乎与我的问题无关。
标签: python sockets google-app-engine