Приложение Server Flask с сервером Cheroot приводит к ошибке в HTTPServer.tick после каждого запроса

Я пытаюсь обслужить приложение wsgi Flask (v1.1.2), используя сервер Cheroot CherryPy (v18.6.0), и после каждого запроса, выполняемого через Postman или браузер, я получаю следующее исключение в моей консоли. Я использую python v3.8.5

Error in HTTPServer.tick
Traceback (most recent call last):
    File "C:\myproject\venv\lib\site-packages\cheroot\server.py", line 1795, in serve
self.tick()
    File "C:\myproject\venv\lib\site-packages\cheroot\server.py", line 2030, in tick
self.connections.expire()
    File "C:\myproject\venv\lib\site-packages\cheroot\connections.py", line 107, in expire
for sock_fd, conn in timed_out_connections:
    File "C:\myproject\venv\lib\site-packages\cheroot\connections.py", line 103, in <genexpr>
(sock_fd, conn)
    File "C:\python\lib\_collections_abc.py", line 743, in __iter__
for key in self._mapping:
RuntimeError: dictionary changed size during iteration

Кодируйте следующим образом:

from cheroot.wsgi import Server
from flask import Flask

app = Flask(__name__)

@app.route("/", methods=["GET"])
def index():
    return "Hello"

if __name__ == "__main__":
    server = Server(bind_addr=("0.0.0.0", 3000), wsgi_app=app)
    try:
         server.start()
    finally:
         server.stop()

Любая идея, вызывающая это исключение, и как мы можем ее решить?

1 ответ

Решение

Это недавняя и общепризнанная проблема с cheroot, см. Cheroot GitHub Issue 312.

Другие вопросы по тегам