我已使用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
file或flexible 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: flex
和runtime: python
(现已弃用原始答案中的vm: true
和runtime: python27
)libraries
部分。 关于Python Flask : Go from Swagger YAML to Google App Engine?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40061085/