Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Python Can';使用sanic openapi时找不到swagger.json_Python_Python 3.x_Swagger_Sanic_Sanic Openapi - Fatal编程技术网

Python Can';使用sanic openapi时找不到swagger.json

Python Can';使用sanic openapi时找不到swagger.json,python,python-3.x,swagger,sanic,sanic-openapi,Python,Python 3.x,Swagger,Sanic,Sanic Openapi,我正在尝试使用模块来自动记录我自己的RESTful API。因此,我通过运行以下命令来安装它们: pip install sanic sanic-openapi # sanic version is 19.12.2 # sanic_openapi version is 0.6.1 我创建了这个简单的项目,顺便说一下,它是在他们的官方GitHub存储库中提供的。它看起来如下所示: from sanic import Sanic, response from sanic_openapi impo

我正在尝试使用模块来自动记录我自己的RESTful API。因此,我通过运行以下命令来安装它们:

pip install sanic sanic-openapi

# sanic version is 19.12.2
# sanic_openapi version is 0.6.1
我创建了这个简单的项目,顺便说一下,它是在他们的官方GitHub存储库中提供的。它看起来如下所示:

from sanic import Sanic, response
from sanic_openapi import swagger_blueprint


app = Sanic("app")
app.blueprint(swagger_blueprint)


@app.route("/")
async def test(request):
    return response.json({"hello": "world"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)
这车开得很好!但当我尝试访问时,它抛出以下错误:

Traceback (most recent call last):
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/app.py", line 974, in handle_request
    response = handler(request, *args, **kwargs)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic_openapi/swagger.py", line 263, in spec
    return json(swagger_blueprint._spec)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/response.py", line 234, in json
    dumps(body, **kwargs),
TypeError: <sanic_openapi.spec.Spec object at 0x7effe3d2f910> is not JSON serializable
[2020-07-12 11:34:09 +0200] - (sanic.access)[INFO][127.0.0.1:37880]: GET http://localhost:8000/swagger/swagger.json  500 2649
[2020-07-12 11:34:09 +0200] [11014] [ERROR] Exception occurred while handling uri: 'http://localhost:8000/swagger/swagger.json'
Traceback (most recent call last):
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/app.py", line 974, in handle_request
    response = handler(request, *args, **kwargs)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic_openapi/swagger.py", line 263, in spec
    return json(swagger_blueprint._spec)
  File "/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site-packages/sanic/response.py", line 234, in json
    dumps(body, **kwargs),
TypeError: <sanic_openapi.spec.Spec object at 0x7effe3d2f910> is not JSON serializable
回溯(最近一次呼叫最后一次):
文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic/app.py”,第974行,在handle_请求中
响应=处理程序(请求、*args、**kwargs)
文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic_openapi/swagger.py”,规范第263行
返回json(大摇大摆的蓝图._规范)
json格式的文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic/response.py”,第234行
倾倒物(主体,**千克),
TypeError:不可序列化JSON
[2020-07-12 11:34:09+0200]-(sanic.access)[INFO][127.0.0.1:37880]:获取http://localhost:8000/swagger/swagger.json  500 2649
[2020-07-12 11:34:09+0200][11014][错误]处理uri时发生异常:'http://localhost:8000/swagger/swagger.json'
回溯(最近一次呼叫最后一次):
文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic/app.py”,第974行,在handle_请求中
响应=处理程序(请求、*args、**kwargs)
文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic_openapi/swagger.py”,规范第263行
返回json(大摇大摆的蓝图._规范)
json格式的文件“/media/anwar/E/Chatbot/NLU_engine/py3.7/lib/python3.7/site packages/sanic/response.py”,第234行
倾倒物(主体,**千克),
TypeError:不可序列化JSON

经过大约两个小时的搜索,我在他们的官方GitHub存储库中找到了解决方案。根据该问题,原因是
sanicopenapi
ujson
的最后两个版本(
2.x
3.x
)不兼容

因此,要解决此问题,您需要将
ujson
包降级为
1.35
,如下所示:

pip install ujson==1.35
现在它工作得很好:


经过大约两个小时的搜索,我在他们的官方GitHub存储库中找到了解决方案。根据该问题,原因是
sanicopenapi
ujson
的最后两个版本(
2.x
3.x
)不兼容

因此,要解决此问题,您需要将
ujson
包降级为
1.35
,如下所示:

pip install ujson==1.35
现在它工作得很好: