Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run gunicorn from a folder that is not the django project folder

I git cloned a project in my home folder, let's call it /home/telessaude. So the project root is located at /home/telessaude/telessaude_branch_master

If I am inside the Django project home folder ( /home/telessaude/telessaude_branch_master ) and issue a gunicorn comman such as

gunicorn -w 2 -b 0.0.0.0:8000 telessaude.wsgi_dev:application --reload --timeout 900

gunicorn starts and works just fine. However ... if I try to run the same command on one directory above ( /home/telessaude ), I get the following error:

telessaude@ubuntu:~$ gunicorn -w 2 -b 0.0.0.0:8000 telessaude.wsgi_dev:application --reload --timeout 900 [2017-03-22 16:39:28 +0000] [10405] [INFO] Starting gunicorn 19.6.0 [2017-03-22 16:39:28 +0000] [10405] [INFO] Listening at: http://0.0.0.0:8000 (10405) [2017-03-22 16:39:28 +0000] [10405] [INFO] Using worker: sync [2017-03-22 16:39:28 +0000] [10410] [INFO] Booting worker with pid: 10410 [2017-03-22 16:39:28 +0000] [10410] [ERROR] Exception in worker process Traceback (most recent call last):   File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 557, in spawn_worker     worker.init_process()   File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 126, in init_process     self.load_wsgi()   File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 136, in load_wsgi     self.wsgi = self.app.wsgi()   File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi     self.callable = self.load()   File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load     return self.load_wsgiapp()   File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp     return util.import_app(self.app_uri)   File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app     __import__(module) ImportError: No module named telessaude.wsgi_dev 

I also tried running gunicorn in my home folder with

gunicorn -w 2 -b 0.0.0.0:8000 telessaude_branch_master.telessaude.wsgi_dev:application --reload --timeout 900

and

gunicorn -w 2 -b 0.0.0.0:8000 /home/telessaude/telessaude_branch_master/telessaude.wsgi_dev:application --reload --timeout 900

but none of them also worked. Can someone tell me how to fix this? I need to run gunicorn from any folder, because I must add it as a "command" parameter to supervisor.

I'm not using a virtual enviromnment.

like image 477
Vini.g.fer Avatar asked Mar 22 '17 19:03

Vini.g.fer


People also ask

How do I run Gunicorn on another port?

Configure Gunicorn The Gunicorn process will start and bind to all host IP addresses on port 8081. Use control + z to terminate Gunicorn process. Note: The default (host) port can be configured here to use any other open port on which you prefer to expose the Transform. Note: In this case 'python3' must be specified.

How do I run Gunicorn as service?

Running sudo -u www-data curl --unix-socket /run/gunicorn. sock http , our Gunicorn service will be automatically started and you should see some HTML from your server in the terminal. systemd employs cgroups to track the processes of a service, so it doesn't need pid files.

Can we run Gunicorn on Windows?

Gunicorn is for a UNIX environment and is incompatible with Windows.


1 Answers

You can use the chdir flag for Gunicorn to change to the project directory before executing your command.

gunicorn -w 2 -b 0.0.0.0:8000 --chdir /home/telessaude/telessaude_branch_master telessaude.wsgi_dev:application --reload --timeout 900 
like image 146
jyap Avatar answered Sep 27 '22 19:09

jyap