首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在谷歌云中包含app.yaml中的系统?

如何在谷歌云中包含app.yaml中的系统?
EN

Stack Overflow用户
提问于 2018-05-22 18:51:13
回答 1查看 155关注 0票数 0

我正在部署烧瓶应用程序,它使用cairosvg,这是用来转换SVG为PDF。当我部署到GCP时,本地应用程序正在顺利运行,它没有部署并得到以下错误:

代码语言:javascript
复制
Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
[2018-05-22 18:09:41 +0000] [1] [INFO] Starting gunicorn 19.8.1
[2018-05-22 18:09:41 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
[2018-05-22 18:09:41 +0000] [1] [INFO] Using worker: sync
[2018-05-22 18:09:41 +0000] [7] [INFO] Booting worker with pid: 7
[2018-05-22 18:09:42 +0000] [7] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/env/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
    self.load_wsgi()
  File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/env/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
    return self.load_wsgiapp()
  File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/env/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
    __import__(module)
  File "/home/vmagent/app/run.py", line 4, in <module>
    from api.controllers import (
  File "/home/vmagent/app/api/controllers/generateBadges.py", line 7, in <module>
    from api.utils.merge_badges import MergeBadges
  File "/home/vmagent/app/api/utils/merge_badges.py", line 4, in <module>
    from cairosvg import svg2pdf
  File "/env/lib/python3.6/site-packages/cairosvg/__init__.py", line 29, in <module>
    from . import surface
  File "/env/lib/python3.6/site-packages/cairosvg/surface.py", line 24, in <module>
    import cairocffi as cairo
  File "/env/lib/python3.6/site-packages/cairocffi/__init__.py", line 41, in <module>
    cairo = dlopen(ffi, 'cairo', 'cairo-2')
  File "/env/lib/python3.6/site-packages/cairocffi/__init__.py", line 38, in dlopen
    raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2
[2018-05-22 18:09:42 +0000] [7] [INFO] Worker exiting (pid: 7)
[2018-05-22 18:09:42 +0000] [1] [INFO] Shutting down: Master
[2018-05-22 18:09:42 +0000] [1] [INFO] Reason: Worker failed to boot.

在谷歌上搜索时,我找到了dlopen()加载库失败: cairo / cairo-2,但我不知道如何在app.yml中包含。

我的app.yml文件:

代码语言:javascript
复制
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

env_variables:
    SQLALCHEMY_DATABASE_URI: >-
      postgresql+psycopg2://USER:PASSWORD@/DATABASE?host=/cloudsql/INSTANCE_CONNECTION_NAME

beta_settings:
    cloud_sql_instances: INSTANCE_CONNECTION_NAME
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 22:46:43

如果缺少的依赖项可以作为python包使用,只需将它们添加到应用程序的requirements.txt文件中,请参见使用Python库

但是,从您引用的帖子的答案来看,这些可能不是python包。如果是这样的话,您仍然可以根据相应的google提供的docker映像创建一个自定义运行时,在其中添加应用程序所需的额外的非python依赖项。来自关于自定义运行时

自定义运行时允许您定义新的运行时环境,其中可能包括其他组件,如语言解释器或应用程序服务器。

另见构建自定义运行时

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50474602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档