Skip to content
This repository has been archived by the owner on Dec 15, 2023. It is now read-only.

Support standard Python3 environment #126

Open
geaden opened this issue May 9, 2021 · 0 comments
Open

Support standard Python3 environment #126

geaden opened this issue May 9, 2021 · 0 comments

Comments

@geaden
Copy link

geaden commented May 9, 2021

While bazel itself works perfectly with Flask, it seems currently it's impossible to deploy app like Python3 quickstart.

The first issue is requirements.txt is not symlinked into bazel-build/path/to/app/app.deploy.runfiles/project (where app.yaml is located). Probably, the issue could be overcome if flask is bundled into external dependency, but gunicorn (or other wsgi server) should be declared somehow.

I manually added symlink to /path/to/app/requirements.txt into bazel-build/path/to/app/app.deploy.runfiles/project and after bazel run //path/to/app:app.deploy it worked, gunicorn dependency was resolved.

The second issue is related to loading main module.

Tried several ways to specify entrypoint in app.yaml:

entrypoint: gunicorn -b :$PORT main:app

This caused the following stacktrace:

Traceback (most recent call last):
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/opt/python3.8/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'main'

And

entrypoint: gunicorn -b :$PORT --chdir /path/to/app main:app
entrypoint: gunicorn -b :$PORT path.to.app.main:app

produced:

Traceback (most recent call last):
  File "/opt/python3.8/lib/python3.8/pkgutil.py", line 493, in find_loader
    spec = importlib.util.find_spec(fullname)
  File "/opt/python3.8/lib/python3.8/importlib/util.py", line 94, in find_spec
    parent = __import__(parent_name, fromlist=['__path__'])
ModuleNotFoundError: No module named '/workspace/path/to/app/main'

Any plans on supporting flask in python appengine standard environment?

Thanks.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant