0

I'm trying to deploy my app but I keep getting this error on the website:

Error: Server Error The server encountered an error and could not complete your request. Please try again in 30 seconds.

The error logs for this are:

2021-07-15 12:36:04 default[20210715t122912] [2021-07-15 12:36:04 +0000] [20] [INFO] Worker exiting (pid: 20) 2021-07-15 12:36:04 default[20210715t122912] [2021-07-15 12:36:04 +0000] [23] [ERROR] Exception in worker process 2021-07-15 12:36:04 default[20210715t122912] Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/workers/gthread.py", line 92, in init_process super().init_process() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_uri) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/opt/python3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 855, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/srv/main.py", line 1, in <module> from booking.wsgi import application File "/srv/booking/wsgi.py", line 12, in <module> from django.core.wsgi import get_wsgi_application ModuleNotFoundError: No module named 'django' 

I already have a main.py file:

main.py

from booking.wsgi import application app = application 

I also have an app.yaml file and these are the contents:

 runtime: python39 entrypoint: gunicorn -b :$PORT booking.wsgi 

Any thoughts?

1
  • it says in the error no module named 'django' are you sure you've installed django and all your packages? Commented Jul 17, 2021 at 12:52

1 Answer 1

1

So the issue is you're not installing the requirements on Google App Engine (GAE), as Jameel Hamdan pointed out.

The fix is to put all your requirements in a requirements.txt file as described here.

The other thing is that you are using an entrypoint in the app.yaml. There's 2 issues with this:

  1. Your entrypoint is incorrect. Considering the way you've set it up, your entrypoint should be entrypoint: gunicorn -b :$PORT main:app. This way you tell gunicorn to look for the app object in the main.py file.
  2. Since you're using a non-default entrypoint, you'll need to make sure gunicorn is in your requirements.txt as described in the GAE docs for entrypoint. I know it's a bit implicit with this sentence: App Engine will also automatically add the gunicorn to your requirements.txt file if you don't specify the entrypoint field. But I am sure you need gunicorn in your requirements.txt.

Sidenote

Since you're likely not using a requirements.txt file, you're likely also not using a virtualenv for your local development. You should always use a virtualenv. See the relevant documentation. Better to get used to doing this now, so you will be doing this without thinking for next projects.

Note that this is also recommended in the GAE docs for the requirements.txt I linked earlier.


EDIT

Try changing your app.yaml to the default app.yaml for Django:

runtime: python39 handlers: # This configures Google App Engine to serve the files in the app's static # directory. - url: /static static_dir: static/ # This handler routes all requests not caught above to your main app. It is # required when static routes are defined, but can be omitted (along with # the entire handlers section) when there are no static files defined. - url: /.* script: auto 
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for your advice. I'm now getting an error that says, there is no module called booking. Booking is the name of the app in the django project. Is there a way to access the main.py file?
I edited my answer, if that doesn't help please go through the quickstart to see what's different between that setup and yours...

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.