问题
在使用Flask作为Electron程序的后端框架时,在Falsk主程序中使用Multiprocessing的process函数来创建一个新的进程,process创建的函数进程需要传入Flask的request对象作为参数,但是在直接传入request对象时会报错,报错代码如下:
_pickle.PicklingError: args[0] from __newobj__ args has the wrong class
原因
从报错代码可以看出跟pickle有关系,这个函数是对参数进行序列化用的,可以实现对象的存储和恢复,Multiprocessing的参数默认好像就是用这种方式,pickle并不是所有对象都可以序列化,估计request就不行,具体可以参考知乎这篇文章python中multiprocess的参数共享与传递
解决办法
既然request不可以序列化,那就转化一下,把request对象转化为request.json或者request.data等对象,并对应修改下自己的方法函数,就可以了