GAEでPUSH通知時の"TypeError: must be _socket.socket, not socket"の対応

GAEでiosのPUSH通知(APNS)を実装しようとしたら、"TypeError: must be _socket.socket, not socket"のエラーがでたので、全体的な流れと対応をまとめる。
なお、このエラーは開発環境でのみ出る。

まずは、Google App EngineからiOSアプリへPush通知が送れるようになりました - laisoを参考に、下記2つを行った。
1、PyAPNsをインストール
2、下のソースの記述

from apns import APNs, Payload


apns = APNs(use_sandbox=True, cert_file='cert.pem', key_file='pkey.pem') 
token_hex = '1c222886bcce84bd9fb34c274ea3d466be970b62c7d72582d6fc302f9b072503' 
# tokeh_hexはiOSアプリで取得するデバイストークン
    
class APNsHandler(webapp.RequestHandler):
    def get(self):
        payload = Payload(alert="Hello World!", sound="default", badge=1)

        apns.gateway_server.send_notification(token_hex, payload)
        self.response.write(u"PUSH通知送信完了")

app = webapp2.WSGIApplication([
    ('/notify', APNsHandler)
], debug=True)

3、app.yamlに下記を追加
libraries:
- name: ssl
version: latest

で、開発環境のGAEを起動して、
http://localhost:8080/notify
にアクセスすると、
"TypeError: must be _socket.socket, not socket"
が発生する。

解決策は、ここに載っている。

やることは2つ。
1、"_ssl" and "_socket"を /path-to-gae-sdk/google/appengine/tools/devappserver2/python/sandbox.py の中の _WHITE_LIST_C_MODULESに追加。
2、/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py を、 /path-to-gae-sdk/google/appengine/dis27/socket.py にコピー(上書き)。