Linux – Setting UWSGI to run a module in a venv

debianlinuxnginxpythonuwsgi

I am having a hard time trying to run a module from UWSGI. This is part of my deployment code:

# ENVIRONMENT
/usr/bin/pip install virtualenv
mkdir -p /srv/www/test
/usr/local/bin/virtualenv /srv/www/test/venv
source /srv/www/test/venv/bin/activate
/srv/www/test/venv/bin/pip install --force-reinstall -e git+git@github.com:xyz/project.git#egg=project

This is the code in it to run.py in the root of the module

from project import app

def main():
    """docstring for main"""
    app.run(debug=True)

if __name__ == '__main__':
    main()

This is the command I am trying to use to run it:

/usr/local/bin/uwsgi –virtualenv $ENV –module project –chdir $APP –master

This is the message I get after running this command:

uWSGI running as root, you can use –uid/–gid/–chroot options

* WARNING: you are running uWSGI as root !!! (use the –uid flag)
WARNING: you are running uWSGI without its master process manager * your processes number limit is 7890 your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with –thunder-lock)
The -s/–socket option is missing and stdin is not a socket.

The error is that it doesn't seem to run or find my module correctly. Can anyone please tell me how I should be starting UWSGI in order to find my app please?

Best Answer

You can try --module instead of -w (could do the same thing). Else just make sure you have the names correct; ie. pass wsgi_module_name or wsgi_module_name:application_callable_name

Although, your error message doesn't actually say there is a problem relating to this. Is there another message you haven't quoted?