Примеры в указанном вами хранилище поставляются с docker файлами. Вы можете использовать Docker для быстрого раскрутки сервера.
cd api_tutorial/openapi/photo_album/codegen_server
docker build . -t codegen_server
docker run codegen_server
Однако это не работает.
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)
Как указано на this Github проблема, эта проблема связана с connexion
и не возникает с версией 2.6.0
. Итак, давайте обновим requirements.txt
для использования этой версии.
connexion == 2.6.0
Создайте и запустите снова с docker и вуаля, все должно работать.
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, перейдя в каталог root и выполнив.
python -m openapi_server
Что, собственно, и делает docker, как мы видим в Dockerfile.
...
ENTRYPOINT ["python3"]
CMD ["-m", "openapi_server"]