我有一个运行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。
在Flask应用程序/ Apache中运行时,以上代码段中的第5行永远不会完成执行。在普通的Python控制台中,一切正常。
恐怕我不知道还能提供什么更多的信息,但是任何帮助或指针都将不胜感激!
编辑:我也许应该补充一点,序列化的对象包含一个Pytorch模块,但是正如我所说的那样,它确实很小。
更新:我尝试使用pickle
代替,奇怪的是注意到了完全相同的行为。然后,我删除了该对象的一些Pytorch组件,并且一切正常,因此看来这根本不是一个jsonpickle
/ pickle
问题。