我有一个 docker 镜像 Flask Web 应用程序,在重建 docker 镜像并从中部署 docker 容器后,该应用程序生成以下错误。 今天之前,使用 docker 文件和requirements.txt 文件构建的镜像中的容器运行时没有任何错误。 我怀疑我今天构建的映像中可能有最近的 python 模块更新,导致出现以下错误。
Python版本是Python 3.12.0
pip list 的输出如下所示。
root@8015f43d01aa:/# pip list
Package Version
------------------ ---------
blinker 1.6.2
cachelib 0.10.2
certifi 2023.7.22
charset-normalizer 3.3.0
click 8.1.7
Flask 2.3.3
Flask-PyMongo 2.3.0
Flask-Session 0.5.0
gunicorn 21.2.0
idna 3.4
itsdangerous 2.1.2
Jinja2 3.1.2
MarkupSafe 2.1.3
packaging 23.2
pika 1.3.2
pip 23.2.1
psycopg2 2.9.8
pyasn1 0.5.0
pyasn1-modules 0.3.0
pymongo 3.12.3
python-dateutil 2.8.2
python-ldap 3.4.3
redis 5.0.1
requests 2.31.0
setuptools 68.2.2
six 1.16.0
urllib3 2.0.6
Werkzeug 3.0.0
wheel 0.41.2
错误信息。
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 2213, in __call__
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 2193, in wsgi_app
response = self.handle_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 1487, in full_dispatch_request
return self.finalize_request(rv)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 1508, in finalize_request
response = self.process_response(response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 2005, in process_response
self.session_interface.save_session(self, ctx.session, response)
File "/usr/local/lib/python3.12/site-packages/flask_session/sessions.py", line 454, in save_session
response.set_cookie(app.config["SESSION_COOKIE_NAME"], session_id,
File "/usr/local/lib/python3.12/site-packages/werkzeug/sansio/response.py", line 224, in set_cookie
dump_cookie(
File "/usr/local/lib/python3.12/site-packages/werkzeug/http.py", line 1303, in dump_cookie
if not _cookie_no_quote_re.fullmatch(value):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: cannot use a string pattern on a bytes-like object
从 Werkzeug==3.0.0 降级到 Werkzeug==2.3.7 解决了上述错误。 Werkzeug==3.0.0 于 2023 年 9 月 30 日发布。
从 Werkzeug==3.0.0 降级到 Werkzeug==2.3.7 解决了上述错误。 Werkzeug==3.0.0 于 2023 年 9 月 30 日发布。
确保传递给
set_cookie()
的 cookie 值被转换为字符串。类似字节的对象以前可以工作,但在最新的 Werkzeug 版本中会导致此错误。