Я сталкиваюсь с проблемой при попытке запустить простой конвейер BigQuery ETL с помощью приложения колбы в Google App Engine в гибкой среде.
Это работает, когда я запускаю его локально, что я делаю первымначиная с flask run
или gunicorn -b :$PORT main:app
, а затем переходя к конечной точке в моем браузере, делая что-то на странице и отправляя форму.Затем обработчик POST для страницы вызывает конвейер Apache Beam.Все это прекрасно работает.
Но когда я развертываю его с помощью gcloud app deploy
и пытаюсь получить доступ к любой конечной точке, я получаю ошибку 502, и журналы показывают следующее:
2018-10-04 14:03:39 default[20181003t232620] Traceback (most recent call last): File "/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 129, in init_process self.load_wsgi() File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi self.wsgi = self.app.wsgi() File "/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load return self.load_wsgiapp() File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp return util.import_app(self.app_uri) File "/env/local/lib/python2.7/site-packages/gunicorn/util.py", line 350, in import_app __import__(module) File "/home/vmagent/app/main.py", line 15, in <module> import rw_bigquery_etl File "/home/vmagent/app/rw_bigquery_etl.py", line 9, in <module> import apache_beam as beam File "lib/apache_beam/__init__.py", line 88, in <module> from apache_beam import coders File "lib/apache_beam/coders/__init__.py", line 19, in <module> from apache_beam.coders.coders import * File "lib/apache_beam/coders/coders.py", line 30, in <module> from apache_beam.coders import coder_impl ImportError: lib/apache_beam/coders/coder_impl.so: invalid ELF header
2018-10-04 14:03:39 default[20181003t232620] [2018-10-04 14:03:39 +0000] [8] [INFO] Worker exiting (pid: 8)
2018-10-04 14:03:39 default[20181003t232620] [2018-10-04 14:03:39 +0000] [1] [INFO] Shutting down: Master
2018-10-04 14:03:39 default[20181003t232620] [2018-10-04 14:03:39 +0000] [1] [INFO] Reason: Worker failed to boot.
СФактическая ошибка: from apache_beam.coders import coder_impl ImportError: lib/apache_beam/coders/coder_impl.so: invalid ELF header
У меня недавно было много проблем с зависимостями, поэтому я просто запустил pip freeze> needs.txt в папке проекта, дав мне this (pastebin) .Я установил это в папку lib в папке проекта и получил строку vendor.add('lib')
в appengine_config.py.Кроме того, это мой app.yaml:
runtime: python
api_version: 1
threadsafe: true
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 2
handlers:
- url: /.*
script: main.app
login: required
Как мне решить эту проблему или устранить ее?
Я новичок в Google Cloud и pip, поэтому я 'Я все еще пытаюсь понять, как работает облачная среда, особенно с пакетами Python.