Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Google云上Apache Beam python模块中的ELF头无效_Google App Engine_Google Cloud Platform_Pip_Apache Beam - Fatal编程技术网

Google app engine Google云上Apache Beam python模块中的ELF头无效

Google app engine Google云上Apache Beam python模块中的ELF头无效,google-app-engine,google-cloud-platform,pip,apache-beam,Google App Engine,Google Cloud Platform,Pip,Apache Beam,在flex环境中,我尝试在Google app Engine上使用flask应用程序运行简单的BigQuery ETL管道时遇到了一个问题 当我在本地运行它时,它就工作了,我首先用flask run或gunicorn-b:$PORT main:app启动它,然后转到浏览器中的端点,在页面上做一些事情,然后提交表单。然后,页面的POST处理程序调用Apache Beam管道。所有这些都很好 但是,当我使用gcloud app deploy部署它并尝试访问任何端点时,会出现502错误,日志显示如下:

在flex环境中,我尝试在Google app Engine上使用flask应用程序运行简单的BigQuery ETL管道时遇到了一个问题

当我在本地运行它时,它就工作了,我首先用
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.
我如何解决此问题,或着手解决此问题


我对Google Cloud和pip还不熟悉,所以我仍在尝试了解云环境是如何工作的,尤其是python包。

整合apache beam的python依赖项/需求尤其令人沮丧

如果能看到你的

  • 管道配置
  • 如何在本地启动管道
  • 如何远程启动管道(启动管道的请求处理程序代码)
  • 管道代码相对于项目根的位置
  • 但听起来像是您为gae flex实例设置的
    requirements.txt
    requirements.txt
    ,但不用于数据流工作者。可能您在本地运行时提供了
    requirements.txt
    作为命令行选项,而您的服务器代码没有提供相同的选项

    看看我的回答:


    我很幸运地使用了
    setup.py
    作为我的管道依赖项,就像在这个例子中一样:

    我想我应该确定我已经构建了一个flask应用程序来服务页面并从那里启动管道。因此,要启动管道,我首先要到一个端点,该端点加载一个页面,然后单击一个按钮来实际启动梁管道。所有这些都可以在本地运行,我可以使用flask run或gunicorn-b:$PORT main:app启动。问题似乎在于,当部署到谷歌云时,整个应用程序无法加载。加载任何端点都会导致上述错误。最近,我甚至在调用gcloud app deploy时也看到了错误。我将更新。我在github上发现了一个示例项目,该项目在app Engine上的数据流管道实现非常少:。修改我的appengine_config.py,添加setup.py,并按照建议组织代码似乎可以做到这一点,因为该应用程序现在已经部署并工作。我认为这个答案是正确的,因为它指引了我正确的方向。
    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