user2769039
user2769039

Reputation: 1

App not responding after flask application Apache deployment(mod_wsgi)

I'm trying to deploy my flask application on Apache web server using mod_wsgi. After the deployment, when i go to the 'healthCheck' URL i configured to return a simple text message, the app is not responding and it's timing out.

This is my wsgi file:

<VirtualHost *:5000>
        ServerName <My ip address here>
        ServerAdmin [email protected]
        WSGIScriptAlias / /var/www/ReleaseServices/ReleaseServices.wsgi
        <Directory /var/www/ReleaseServices/ReleaseServices/>
            Order allow,deny
            Allow from all
        </Directory>
        Alias /static /var/www/ReleaseServices/ReleaseServices/static
        <Directory /var/www/ReleaseServices/ReleaseServices/static/>
            Order allow,deny
            Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

I don't see any error in the apache logs as well. What could be the issue? Please ask me if any extra details are required.

Upvotes: 0

Views: 920

Answers (1)

user2769039
user2769039

Reputation: 1

So i found the solution after searching a lot.

I was using scikit-learn in my init.py script and the import statement was causing issues and making the app unresponsive. After removing the import, it was working fine.

When i searched for solutions, i found some interesting facts related to the WSGI configuration, one of which i had missed out:

http://blog.rtwilson.com/how-to-fix-flask-wsgi-webapp-hanging-when-importing-a-module-such-as-numpy-or-matplotlib/

In that link, check the comment by Graham Dumpleton:

The specific solution is forcing use of the main interpreter by setting the application group to %{GLOBAL}. It is documented in http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

Basically you have to add the following line to your .wsgi file:

WSGIApplicationGroup %{GLOBAL}

This will force a specific WSGI application to be run within the very first Python sub interpreter created when Python is initialised and hence solves the problem!

Upvotes: 0

Related Questions