Hi, I am trying to deploy my Django website on google cloud using tutorial (https://cloud.google.com/python/django/appengine#cloud-console) My website is working smoothly on local host as well on Heroku (Free). But when i try to deploy my website on GCP, deployment finishes without any error. But access to website using the link provided by GCP gives mei ‘nginx 502 Bad Gateway’ error.
I assume, error is because its listening to ‘http://0.0.0.0:8081’. Can anyone please help.
Below are my logs:
Traceback from GCP website:
2020-06-20 12:02:57.759 IST
Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process super().init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_uri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked ModuleNotFoundError: No module named 'main'
Expand all | Collapse all{
insertId: "5eedad99000b96b31054c1f8"
labels: {
clone_id: "00c61b117ceed98b6a28aa8b70411a0a5acbb82696fd9c6894b1680eeaf75adfbafe66"
}
logName: "projects/school-website-272007/logs/stderr"
receiveTimestamp: "2020-06-20T06:32:57.952414554Z"
resource: {
labels: {
module_id: "default"
project_id: "school-website-272007"
version_id: "20200620t115649"
zone: "asia-south1-2"
}
type: "gae_app"
}
textPayload: "Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process
super().init_process()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
self.load_wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
self.wsgi = self.app.wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
return self.load_wsgiapp()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
return util.import_app(self.app_uri)
File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
mod = importlib.import_module(module)
File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'main'"
timestamp: "2020-06-20T06:32:57.759475Z"
}
After GCP deploy and ‘gcloud app logs tail -s default’ generates log as below.
2020-06-20 06:51:07 default[20200620t115649] Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-p
ackages/gunicorn/workers/gthread.py", line 92, in init_process super().init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/env/lib/python
3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/li
b/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_u
ri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module return
_bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", l
ine 965, in _find_and_load_unlocked ModuleNotFoundError: No module named 'main'
2020-06-20 06:51:07 default[20200620t115649] [2020-06-20 06:51:07 +0000] [21] [INFO] Worker exiting (pid: 21)
2020-06-20 06:51:07 default[20200620t115649] [2020-06-20 06:51:07 +0000] [7] [INFO] Shutting down: Master
2020-06-20 06:51:07 default[20200620t115649] [2020-06-20 06:51:07 +0000] [7] [INFO] Reason: Worker failed to boot.
2020-06-20 06:51:08 default[20200620t115649] "GET /favicon.ico HTTP/1.1" 502
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [7] [INFO] Starting gunicorn 20.0.4
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [7] [INFO] Listening at: http://0.0.0.0:8081 (7)
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [7] [INFO] Using worker: threads
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [18] [INFO] Booting worker with pid: 18
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [18] [ERROR] Exception in worker process
2020-06-20 06:51:09 default[20200620t115649] Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-p
ackages/gunicorn/workers/gthread.py", line 92, in init_process super().init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/env/lib/python
3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/li
b/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_u
ri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module return
_bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", l
ine 965, in _find_and_load_unlocked ModuleNotFoundError: No module named 'main'
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [18] [INFO] Worker exiting (pid: 18)
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [22] [INFO] Booting worker with pid: 22
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [22] [ERROR] Exception in worker process
2020-06-20 06:51:09 default[20200620t115649] Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-p
ackages/gunicorn/workers/gthread.py", line 92, in init_process super().init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/env/lib/python
3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/li
b/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_u
ri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module return
_bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", l
ine 965, in _find_and_load_unlocked ModuleNotFoundError: No module named 'main'
2020-06-20 06:51:09 default[20200620t115649] [2020-06-20 06:51:09 +0000] [22] [INFO] Worker exiting (pid: 22)
2020-06-20 06:51:09 default[20200620t115649] Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 209, in run self.sleep() File "/env/lib/python3.7/site-packages/gunicorn/a
rbiter.py", line 357, in sleep ready = select.select([self.PIPE[0]], [], [], 1.0) File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 242, in handle_chld self.reap_workers() File "/env/lib/python3.7/sit
e-packages/gunicorn/arbiter.py", line 525, in reap_workers raise HaltServer(reason, self.WORKER_BOOT_ERROR) gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2020-06-20 06:51:09 default[20200620t115649]
2020-06-20 06:51:09 default[20200620t115649] During handling of the above exception, another exception occurred:
2020-06-20 06:51:09 default[20200620t115649]
2020-06-20 06:51:09 default[20200620t115649] Traceback (most recent call last): File "/env/bin/gunicorn", line 10, in <module> sys.exit(run()) File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in
run WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 228, in run super().run() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py",
line 72, in run Arbiter(self).run() File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 229, in run self.halt(reason=inst.reason, exit_status=inst.exit_status) File "/env/lib/python3.7/site-packages/gun
icorn/arbiter.py", line 342, in halt self.stop() File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 393, in stop time.sleep(0.1) File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 242, i
n handle_chld self.reap_workers() File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 525, in reap_workers raise HaltServer(reason, self.WORKER_BOOT_ERROR) gunicorn.errors.HaltServer: <HaltServer 'Worker
failed to boot.' 3>
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hi there,
I just came accross this quesiton.
What I could suggest for Django is to follow the steps here on how to Set Up Django with Nginx, and Gunicorn:
Regarding the 502 error, this means that your backend service is not running so Nginx is failing to connect to the backend, for more information on how to troubleshoot the 502 error, I could suggest following the steps from this answer here:
https://www.digitalocean.com/community/questions/502-bad-gateway-nginx-2
Regards, Bobby
The key issue here is the ModuleNotFoundError: No module named 'main'. This error typically occurs when Gunicorn cannot find the WSGI application module. Let’s fix this step by step:
In a typical Django project, the WSGI application is defined in the wsgi.py file, usually located in the project folder (e.g., your_project_name/wsgi.py). Gunicorn needs to know where to find this file to run your app.
wsgi.py file and confirm it looks something like this:import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings')
application = get_wsgi_application()
Replace your_project_name with your actual project name.
The main module error suggests Gunicorn is looking for the wrong app module. Update your app.yaml file to point to the correct WSGI application.
app.yaml file.entrypoint setting and update it to:entrypoint: gunicorn -b :$PORT your_project_name.wsgi
your_project_name with the actual name of your Django project directory (the folder that contains settings.py and wsgi.py).Redeploy your application with the corrected app.yaml file:
gcloud app deploy
Django does not serve static files in production by default. You need to configure your App Engine to serve static files correctly:
app.yaml:settings.py:STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
python manage.py collectstatic
app.yaml:handlers:
- url: /static
static_dir: staticfiles
App Engine may require a different database configuration. If you’re using PostgreSQL or Cloud SQL, ensure you’ve set up your database settings correctly. Update DATABASES in settings.py to point to your Cloud SQL instance, e.g.:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'your_db_name',
'USER': 'your_db_user',
'PASSWORD': 'your_db_password',
'HOST': '/cloudsql/your-project-id:your-region:your-instance-name',
}
}
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.