QTimer结合socket实现HTTP非阻塞通信

首先本人最近要写一个stablediffusion的dcc前端,需要使用sd的api通信,生成图片耗时太久,maya内部使用多线程有各种问题,就考虑使用timer来实现同步不阻塞的http网络接口访问。
首先搭建sd的api服务器就不多赘述了,自己查看github上的sd的wiki就可以知道了
这里测试用的fastspi搭建的一个临时接口,代码如下
随后第一步我们直接构建一个套接字socket:
随后设置套接字为非阻塞
随后构建http报表
通过套接字发送这个http报表:
这个时候由于设置了套接字非阻塞,程序不会在这里卡住,会直接往下面执行,由于设置了套接字非阻塞,接受套接字返回数据的写法需要用到try来实现,代码如下
接受数据我们可以写到QTimer里边去,QTimer的Pyside2官网介绍地址:https://doc.qt.io/qtforpython-5/PySide2/QtCore/QTimer.html#PySide2.QtCore.PySide2.QtCore.QTimer.setInterval
QTimer的一个使用范例如下
接下来是访问sd的socket发送同步非阻塞http报文,并使用QTimer来接受数据的代码: