我有一个使用 Apache 运行的 Flask 应用程序,它使用一些用jsonpickle
. 使用 反序列化时jsonpickle.decode(my_json_string)
,什么都没有发生,这意味着该方法不返回任何内容,也不会引发错误。就好像它只是无限地进行(没有观察到它完成)。
我试过一个只有几 KB 大的玩具对象,我监控硬件使用情况,这不是内存问题,也不是 CPU 问题。
更令人费解的是,使用相同的代码在 Python 控制台中加载对象而不是 Flask(使用相同的 virtualenv),一切顺利,对象在几毫秒内被解码。
import jsonpickle
with open("serialized_object.json") as f:
object_as_json = f.read() # this works, print(object_as_json) as expected
my_object = jsonpickle.decode(object_as_json)
这是 Python 3.6.8、Flask 0.12.2、jsonpickle 1.2、Apache 2.4。
上面代码片段中的第 5 行在 Flask app/Apache 中运行时永远不会完成执行。在普通的 Python 控制台中,一切正常。
恐怕我不知道要提供什么更多信息,但非常感谢任何帮助或指示!
编辑:我也许应该补充一点,序列化对象包含一个 Pytorch 模块,但正如我所说,这真的很小。
更新:我尝试pickle
改用并注意到完全相同的行为,奇怪的是。然后我删除了该对象的一些 Pytorch 组件,一切正常,所以看起来这根本不是jsonpickle
/pickle
问题。