首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行由swagger codegen生成的服务器失败

运行由swagger codegen生成的服务器失败
EN

Stack Overflow用户
提问于 2020-04-16 21:16:40
回答 1查看 628关注 0票数 0

我正在学习为机器学习服务开发restful。我使用openapi规范来定义我的api规范,并尝试使用烧瓶rest。但是,我发现这个中型员额与我的意图相关,所以我下载了源代码并试图在本地运行服务器,但是服务器端点失败了。我可以在同一个端点上运行我的另一个烧瓶应用程序,但是即使我按照它的指示,这个项目也不能工作。我创建了我的open api spec文件,所以我想通过本地运行服务器来学习和理解这个中型员额。有人能告诉我这个中等的post源代码发生了什么事吗?有什么快速的解决方案可以解决如何在本地运行服务器吗?谢谢

对我来说,一个简单的烧瓶应用程序可以工作,可以在服务器端点上运行。

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)


@app.route('/')
def hello():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

我想从这个带有OpenAPI的API运行服务器,因为我想使用相同的结构来开发api。有人能指出我为什么不能运行服务器吗?知道吗?

更新

这个中型员额中,由openapi代码生成器生成并由openapi规范文件构造的所有工件,因此能够从其源代码运行服务器将帮助我理解如何继续我的工作流程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 21:38:29

您提到的存储库中的示例附带了docker文件。您可以使用Docker快速拆分服务器。

代码语言:javascript
复制
cd api_tutorial/openapi/photo_album/codegen_server
docker build . -t codegen_server
docker run codegen_server

然而,这是行不通的。

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/usr/src/app/openapi_server/__main__.py", line 3, in <module>
    import connexion
  File "/usr/local/lib/python3.8/site-packages/connexion/__init__.py", line 3, in <module>
    from .apis import AbstractAPI  # NOQA
  File "/usr/local/lib/python3.8/site-packages/connexion/apis/__init__.py", line 1, in <module>
    from .abstract import AbstractAPI  # NOQA
  File "/usr/local/lib/python3.8/site-packages/connexion/apis/abstract.py", line 16, in <module>
    from ..operations import OpenAPIOperation, Swagger2Operation
  File "/usr/local/lib/python3.8/site-packages/connexion/operations/__init__.py", line 1, in <module>
    from .abstract import AbstractOperation  # noqa
  File "/usr/local/lib/python3.8/site-packages/connexion/operations/abstract.py", line 11, in <module>
    from ..decorators.response import ResponseValidator
  File "/usr/local/lib/python3.8/site-packages/connexion/decorators/response.py", line 12, in <module>
    from .validation import ResponseBodyValidator
  File "/usr/local/lib/python3.8/site-packages/connexion/decorators/validation.py", line 9, in <module>
    from werkzeug import FileStorage
ImportError: cannot import name 'FileStorage' from 'werkzeug' (/usr/local/lib/python3.8/site-packages/werkzeug/__init__.py)

正如在 Github问题上所指出的,这个问题与connexion有关,而在版本2.6.0中不发生。因此,让我们更新requirements.txt以使用此版本。

代码语言:javascript
复制
connexion == 2.6.0

重新建造和运行与码头和沃伊拉,它应该能工作。

代码语言:javascript
复制
docker run codegen_server
 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

您也可以在没有Docker的情况下运行服务器,方法是将cd转到根目录并执行.

代码语言:javascript
复制
python -m openapi_server

实际上,正如我们在Dockerfile中所看到的,这正是docker所做的。

代码语言:javascript
复制
...

ENTRYPOINT ["python3"]
CMD ["-m", "openapi_server"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61260174

复制
相关文章

相似问题

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