我已使用Swagger编辑器创建了REST API,并已请求下载Python Flask的服务器代码。我正尝试将其部署到Google Cloud Platform(我认为这是最新名称?还是仍然是GAE?),但我需要填补一些空白。

我知道Swagger代码是有效的,因为我已经在本地部署了它而没有任何问题。但是,它使用连接库而不是直接使用Flask。

对于如何将适用于GCP的app.yaml文件和所生成代码中的正确入口点合并在一起,我几乎迷失了。另外,我知道生成的代码声明它是自己的应用服务器,我认为您不需要为GCP做。
这是我当前的 app.yaml

application: some-app-name
version: 1
runtime: python27
api_version: 1
threadsafe: yes
entrypoint: python app.py

libraries:
- name: connexion
  version: "latest"

这是我的 app.py
import connexion

if __name__ == '__main__':
    app = connexion.App(__name__, specification_dir='./swagger/')
    app.add_api('swagger.yaml', arguments={'title': 'this is my API'})
    app.run(port=8080)

我现在遇到的主要错误是
google.appengine.api.yaml_errors.EventError: the library "connexion" is not supported

我有一种感觉,这是因为我在app.py中声明了一个应用服务器的方式-可能不需要。我如何修改此文件以仍然使用我的Swagger代码但可以在GCP上运行?

最佳答案

您的文件中似乎存在一些不一致之处,目前尚不清楚您是否打算将其设为standard environment app.yaml fileflexible environment。我不知道是因为我不熟悉 Swagger 和摇摇欲坠。

如果应该将其作为标准环境,则:

  • entrypoint:不是受支持的配置关键字
  • connexion库不是the runtime-provided third-party libraries之一,因此您不能request it(即在libraries部分列出)。您需要install it (vendor it in)
  • 它缺少handlers部分

  • 经历Getting Started with Flask on App Engine Standard Environment可能是一个好主意

    但是,如果您的目标是一个灵活的环境app.yaml文件,则:
  • 您需要在其中配置env: flexruntime: python(现已弃用原始答案中的vm: trueruntime: python27)
  • installing/specifying dependencies的处理方式有所不同,而不是通过libraries部分。
  • 关于Python Flask : Go from Swagger YAML to Google App Engine?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40061085/

    10-09 06:20
    查看更多