Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSLError: Can't connect to HTTPS URL because the SSL module is not available on google app engine

Tags:

Want to use wechat sdk to create menu

WeChat.create_menu({      "button":[      {               "type":"click",           "name":"Daily Song",           "key":"V1001_TODAY_MUSIC"       },       {            "type":"click",            "name":" Artist Profile",            "key":"V1001_TODAY_SINGER"       },       {            "name":"Menu",            "sub_button":[            {                    "type":"view",                "name":"Search",                "url":"http://www.soso.com/"             },             {                "type":"view",                "name":"Video",                "url":"http://v.qq.com/"             },             {                "type":"click",                "name":"Like us",                "key":"V1001_GOOD"             }]        }]  }) 

Currently not work because of this error:

Traceback (most recent call last):   File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle     result = handler(dict(self._environ), self._StartResponse)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1519, in __call__     response = self._internal_error(e)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__     rv = self.handle_exception(request, response, e)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__     rv = self.router.dispatch(request, response)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher     return route.handler_adapter(request, response)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__     return handler.dispatch()   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch     return self.handle_exception(e, self.app.debug)   File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch     return method(*args, **kwargs)   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechatAPIHandler.py", line 72, in post     "key":"V1001_GOOD"   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 355, in create_menu     data=menu_data   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 949, in _post     **kwargs   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 907, in _request     "access_token": self.access_token,   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 849, in access_token     self.grant_token()   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 273, in grant_token     "secret": self.__appsecret,   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 935, in _get     **kwargs   File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 917, in _request     **kwargs   File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/api.py", line 50, in request     response = session.request(method=method, url=url, **kwargs)   File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/sessions.py", line 465, in request     resp = self.send(prep, **send_kwargs)   File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/sessions.py", line 573, in send     r = adapter.send(request, **kwargs)   File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/adapters.py", line 431, in send     raise SSLError(e, request=request) SSLError: Can't connect to HTTPS URL because the SSL module is not available. 

python request module is include in the app engine project. Using python 2.7. Being look for ways to solve this problem but have not find very clear way to solve the problem yet

like image 478
Nosakhare Belvi Avatar asked May 21 '15 18:05

Nosakhare Belvi


People also ask

Can't connect to https URL because the SSL module is not available )':?

This is likely due to libssl being installed, then your python virtualenv env created, then something happening to libssl, such as being upgraded/removed. The first step to resolve is to ensure you have libssl installed. If you're not using pyenv, then however you installed Python remove it and reinstall.

Can't connect to https URL because the SSL module is not available redhat?

The error states that the SSL python module is not available; meaning you either don't have an appropriate ssl lib installed (probably not since you state the system python can pip install fine), or the python you built from source or otherwise installed doesn't include the ssl module.


2 Answers

If you're using GAE's Sockets, you can get SSL support without any hacks by simply loading the SSL library.

Simply add this to your app.yaml file:

libraries: - name: ssl   version: latest 

This is documented on Google Cloud's OpenSSL Support documentation.

like image 151
Yahel Avatar answered Oct 24 '22 15:10

Yahel


This blog post details a solution. From the blog post:

The problem is GAE has a “whitelist” of select standard libraries. SSL (_ssl, _socket) is not one of them. So, we need to tweak the sandbox environment (dangerous) carefully. The below code uses the standard Python socket library instead of the GAE-provided in the development environment. Modify [or create] appengine_config.py:

import os  # Workaround the dev-environment SSL #   http://stackoverflow.com/q/16192916/893652 if os.environ.get('SERVER_SOFTWARE', '').startswith('Development'):     import imp     import os.path     from google.appengine.tools.devappserver2.python import sandbox      sandbox._WHITE_LIST_C_MODULES += ['_ssl', '_socket']     # Use the system socket.     psocket = os.path.join(os.path.dirname(os.__file__), 'socket.py')     imp.load_source('socket', psocket) 
like image 28
ezra-g Avatar answered Oct 24 '22 15:10

ezra-g