Werkzeug.datastructs 不是一个包

问题描述 投票:0回答:1

我正在处理我相当确定是版本控制错误的问题。

我正在运行一个

flask
(2.2.3) 应用程序,它使用
flask-caching
(2.0.1) 在 Redis 上缓存数据。我已将
werkzeug
的版本固定到 2.2.2,这是
flask-caching
flask
的依赖项。

每当它

flask-caching
收到缓存命中并尝试从Redis中提取时,我都会收到以下错误:

No module named 'werkzeug.datastructures.headers'; 'werkzeug.datastructures' is not a package

当底层包

cachelib
尝试对flask-caching中存储的Redis数据集进行
反序列化
(第94行)时,就会发生这种情况。

腌制的绳子是这样的

b'!\x80\x05\x95\x17\x01\x00\x00\x00\x00\x00\x00\x8c\x0eflask.wrappers\x94\x8c\x08Response\x94\x93\x94)\x81\x94}\x94(\x8c\x08_charset\x94\x8c\x05utf-8\x94\x8c\x07headers\x94\x8c\x1fwerkzeug.datastructures.headers\x94\x8c\x07Headers\x94\x93\x94)\x81\x94}\x94\x8c\x05_list\x94]\x94(\x8c\x0cContent-Type\x94\x8c\x10application/json\x94\x86\x94\x8c\x0eContent-Length\x94\x8c\x06429482\x94\x86\x94esb\x8c\x07_status\x94\x8c\x06200 OK\x94\x8c\x0c_status_code\x94K\xc8\x8c\x12direct_passthrough\x94\x89\x8c\t_on_close\x94]\x94\x8c\x08response\x94]\x94B\xaa\x8d\x06\x00{"categories":[{"is_selected":true,"key":"points","label_long":"points","label_short":"pts","multiplier":1,"punted":false,"selectable":true,"type_":"standard"},{"is_selected":true,"key":"rebounds","label_long":"rebounds","label_short":"reb","multiplier":1,"punted":false,"selectable":true,"type_":"standard"},{"is_selected":true,"key":"assists","label_long":"assists","label_short":"ast","multiplier":1,"punted":false,"selectable":true,"type_":"standard"},{"is_...

如果仔细观察,

werkzeug.datastructures.headers
包含在该字符串中,它会尝试反序列化,这会导致错误。

有谁知道为什么会发生这种情况以及如何解决它?

flask werkzeug
1个回答
0
投票

我仍然不知道是什么导致了这个问题,但是使用

cache.clear()
手动清除缓存数据似乎已经阻止了它的发生。

© www.soinside.com 2019 - 2024. All rights reserved.