所以我一直在努力解决这个让我发疯的泡菜错误。我有以下带有以下代码的主引擎类:
import eventlet
import socketio
import multiprocessing
from multiprocessing import Queue
from multi import SIOSerever
class masterEngine:
if __name__ == '__main__':
serverObj = SIOSerever()
try:
receiveData = multiprocessing.Process(target=serverObj.run)
receiveData.start()
receiveProcess = multiprocessing.Process(target=serverObj.fetchFromQueue)
receiveProcess.start()
receiveData.join()
receiveProcess.join()
except Exception as error:
print(error)
我还有另一个名为 multi 的文件,其运行如下:
import multiprocessing
from multiprocessing import Queue
import eventlet
import socketio
class SIOSerever:
def __init__(self):
self.cycletimeQueue = Queue()
self.sio = socketio.Server(cors_allowed_origins='*',logger=False)
self.app = socketio.WSGIApp(self.sio, static_files={'/': 'index.html',})
self.ws_server = eventlet.listen(('0.0.0.0', 5000))
@self.sio.on('production')
def p_message(sid, message):
self.cycletimeQueue.put(message)
print("I logged : "+str(message))
def run(self):
eventlet.wsgi.server(self.ws_server, self.app)
def fetchFromQueue(self):
while True:
cycle = self.cycletimeQueue.get()
print(cycle)
如您所见,我可以尝试创建两个我想独立运行的 def run 和 fetchFromQueue 进程。
我的 run 函数启动 python-socket 服务器,我从 html 网页发送一些数据到该服务器(无需多处理即可完美运行)。然后我尝试将接收到的数据推送到队列,以便我的其他函数可以检索它并使用接收到的数据。
我需要对从套接字接收到的数据执行一组耗时操作,这就是我将其全部推入队列的原因。
在运行主引擎类时,我收到以下信息:
Can't pickle <class 'threading.Thread'>: it's not the same object as threading.Thread
I ended!
[Finished in 0.5s]
你能帮我解决我做错了什么吗?