python - Python 传输端点已连接
问题描述
def ask(self):
self.mutex.acquire()
self.sock.connect(self.address)
self.sock.sendall(Utility.tolength("DO UNIX-Terminal -1", " ", 2048).encode())
m = self.sock.recv(2048)
self.sock.close()
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.mutex.release()
return m
使用 ask() 后,我得到以下异常:
File "./DeviceServerRequester.py", line 22, in ask
self.sock.connect(self.address)
OSError: [Errno 106] Transport endpoint is already connected
我的意思是,我关闭了套接字。我重新实例化了套接字。一切都发生在互斥体中......我不明白,为什么操作系统保持连接。
编辑:底层服务器如下所示:
def run(self):
self.bindsocket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.bindsocket.bind(self.adress)
self.bindsocket.listen()
while True:
newsocket, addr = self.bindsocket.accept()
string = newsocket.recv(2048).decode()
(deviceid, cmd, cmdargs, _) = string.split(" ", 3)
if cmd == "DO":
message = "OK: "
backmessage = self.give(self, deviceid, cmd, cmdargs)
message = (message + backmessage)
newsocket.sendall((message + " "*(MESSAGELENGTH-len(br))).encode())
else:
br = "BAD REQUEST"
newsocket.sendall((br + " "*(MESSAGELENGTH-len(br))).encode())
newsocket.close()
编辑:我可能会补充一点,有时它似乎工作了一段时间。我正在运行多个 uwsgi - 实例。
编辑:有人知道在运行客户端的多个进程时还有什么可能引发此错误吗?它可以单独处理。
解决方案
推荐阅读
- android - 在 Android Studio 中使用 Recycler View 单击分页中的每个项目?
- android - 如何用android“dp”测量位图
- java - 更改 Java 中公共变量的值,供多个框架使用
- jupyter-notebook - 由于类型错误,通过标签删除某些单元格失败
- python - 改变熊猫的nan值
- jenkins - 使用 jenkins 更新 kubernetes 部署
- apache-spark - 转换列表[地图
] 触发数据框 - ruby - 从所有属性定义中提取使用的 filebeat 探矿者'fileds'(基于 ruby)
- ionic-framework - ionic 3 ion-radio 在字符串等于某物时检查
- arrays - 共享的类型是什么?