Hi Bill, Thanks for your reply. This was one of the first things we looked at a week or two ago. We even tried importing requests as a different module name.
This exact same code will run properly when the Flask module is run directly with the python interpreter from our virtualenv. If we were clobbering the name "requests" I would expect to encounter errors when running outside of Apache & mod_wsgi as well. Regards, Chris On Thursday, September 28, 2017 at 12:51:37 PM UTC-7, Bill, KE1G wrote: > > Do you have a module of your own named "requests" that is being confused, > somehow, with the installed package? > Or might you be importing something "as requests"? > > On Thu, Sep 28, 2017 at 12:02 PM, Chris Barton < > [email protected] <javascript:>> wrote: > >> Hello, >> >> I've been working on the deployment of a Flask application using >> mod_wsgi4.5.18 (compiled against Python3.6.1) and have been encountering >> issues with the requests library that only seem to manifest when the Flask >> app is run from behind Apache & mod_wsgi. When the app is invoked from the >> virtualenv python interpreter it works flawlessly. >> >> The problem occurs in areas where we are attempting to use the requests >> library to make a call to external APIs (BlueJeans & Slack) during the >> handling of a request to our Flask app. >> >> Here are some pieces of our current configuration. We've been puzzled by >> this for the past two weeks and do not seem to be getting any closer to a >> solution. At this point the development team is asking to look at other >> options such as Nginx & Gunicorn. >> >> *Python traceback*: >> [Fri Sep 22 16:35:49.378817 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] [2017-09-22 16:35:49,377] >> ERROR in app: Exception on /conference [POST] >> [Fri Sep 22 16:35:49.378844 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] Traceback (most recent call >> last): >> [Fri Sep 22 16:35:49.378847 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/util/bluejeans.py", line 13, in >> password_grant >> [Fri Sep 22 16:35:49.378850 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] r = >> requests.post(BASE_URL + '/oauth2/token?Password', json=json) >> [Fri Sep 22 16:35:49.378852 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] AttributeError: module >> 'requests' has no attribute 'post' >> [Fri Sep 22 16:35:49.378855 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] >> [Fri Sep 22 16:35:49.378857 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] During handling of the above >> exception, another exception occurred: >> [Fri Sep 22 16:35:49.378859 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] >> [Fri Sep 22 16:35:49.378861 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] Traceback (most recent call >> last): >> [Fri Sep 22 16:35:49.378863 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/app.py", line >> 1982, in wsgi_app >> [Fri Sep 22 16:35:49.378866 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] response = >> self.full_dispatch_request() >> [Fri Sep 22 16:35:49.378868 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/app.py", line >> 1614, in full_dispatch_request >> [Fri Sep 22 16:35:49.378871 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] rv = >> self.handle_user_exception(e) >> [Fri Sep 22 16:35:49.378873 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask_cors/extension.py", >> >> line 161, in wrapped_function >> [Fri Sep 22 16:35:49.378875 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] return >> cors_after_request(app.make_response(f(*args, **kwargs))) >> [Fri Sep 22 16:35:49.378877 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/app.py", line >> 1517, in handle_user_exception >> [Fri Sep 22 16:35:49.378880 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] reraise(exc_type, >> exc_value, tb) >> [Fri Sep 22 16:35:49.378882 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/_compat.py", >> line 33, in reraise >> [Fri Sep 22 16:35:49.378884 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] raise value >> [Fri Sep 22 16:35:49.378886 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/app.py", line >> 1612, in full_dispatch_request >> [Fri Sep 22 16:35:49.378889 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] rv = >> self.dispatch_request() >> [Fri Sep 22 16:35:49.378891 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/venv/lib/python3.6/site-packages/flask/app.py", line >> 1598, in dispatch_request >> [Fri Sep 22 16:35:49.378893 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] return >> self.view_functions[rule.endpoint](**req.view_args) >> [Fri Sep 22 16:35:49.378895 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/endpoints/conference.py", line 11, in >> create_conference >> [Fri Sep 22 16:35:49.378898 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] response, status = >> conference.create_conference(request.json) >> [Fri Sep 22 16:35:49.378902 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/logic/conference.py", line 35, in >> create_conference >> [Fri Sep 22 16:35:49.378904 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] userId, token = >> bjn_util.password_grant(bjn_config.USERNAME, bjn_config.PASSWORD) >> [Fri Sep 22 16:35:49.378907 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/util/bluejeans.py", line 24, in >> password_grant >> [Fri Sep 22 16:35:49.378909 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] logger.error(ex, >> application='Conference') >> [Fri Sep 22 16:35:49.378911 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/util/logger.py", line 81, in error >> [Fri Sep 22 16:35:49.378913 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] log(message, >> logType='error', application=application, traceback=traceback) >> [Fri Sep 22 16:35:49.378916 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/util/logger.py", line 70, in log >> [Fri Sep 22 16:35:49.378918 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] slack(message + '\\n' + >> traceback, 'https://hooks.slack.com/services/<URL REMOVED>') >> [Fri Sep 22 16:35:49.378920 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] File >> "/var/www/sites/api/rest_api_v1/util/logger.py", line 20, in slack >> [Fri Sep 22 16:35:49.378923 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] response = >> requests.post(webhook_url, data=json.dumps(slack_data), >> [Fri Sep 22 16:35:49.378926 2017] [wsgi:error] [pid 1708:tid >> 139626802534144] [remote 10.6.70.171:50515] AttributeError: module >> 'requests' has no attribute 'post' >> >> >> *Apache startup message showing mod_wsgi compiled for Python3.6*: >> [Wed Sep 27 16:13:25.690202 2017] [mpm_event:notice] [pid 63496:tid >> 139773643462528] AH00489: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g >> mod_wsgi/4.5.18 Python/3.6 configured -- resuming normal operations >> >> *Python packages installed in the virtualenv*: >> (venv) root@ub50368:/var/www/sites/api# pip list >> certifi (2017.7.27.1) >> chardet (3.0.4) >> click (6.7) >> configparser (3.5.0) >> Flask (0.12.2) >> Flask-Cors (3.0.3) >> Flask-MySQL (1.4.0) >> idna (2.6) >> itsdangerous (0.24) >> Jinja2 (2.9.6) >> MarkupSafe (1.0) >> pip (9.0.1) >> PyMySQL (0.7.11) >> pytz (2017.2) >> requests (2.18.4) >> setuptools (36.5.0) >> six (1.10.0) >> urllib3 (1.22) >> Werkzeug (0.12.2) >> wheel (0.30.0) >> >> *Globally installed Python packages*: >> root@ub50368:/var/www/sites/api# pip3.6 list >> pip (9.0.1) >> setuptools (28.8.0) >> virtualenv (15.1.0) >> >> *WSGI Directives from Apache2 configuration*: >> WSGIDaemonProcess rest_api_v1 user=api group=api home=/var/www/sites/api >> python-home=/var/www/sites/api/venv >> WSGIProcessGroup rest_api_v1 >> #WSGIApplicationGroup %{GLOBAL} >> WSGIScriptAlias / /var/www/sites/api/start.wsgi >> >> *Things we've tried*: >> >> - Installing requests (& all pip packages) globally and disabling the >> python-home parameter >> - Rebuilding the virtualenv >> - Installing requests directly from git/source >> - Using the activate_this.py - >> >> http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/#working-with-virtual-environments >> - Embedding the requests source directly in the Flask app >> >> >> Does anyone have any idea of what could be going wrong, or how to dive >> deeper into the problem? >> >> Thanks, >> >> Chris >> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/modwsgi. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
