QTimer結(jié)合socket實(shí)現(xiàn)HTTP非阻塞通信
2023-07-24 17:15 作者:堅(jiān)韌的小牛 | 我要投稿

首先本人最近要寫一個(gè)stablediffusion的dcc前端,需要使用sd的api通信,生成圖片耗時(shí)太久,maya內(nèi)部使用多線程有各種問題,就考慮使用timer來實(shí)現(xiàn)同步不阻塞的http網(wǎng)絡(luò)接口訪問。
首先搭建sd的api服務(wù)器就不多贅述了,自己查看github上的sd的wiki就可以知道了
這里測試用的fastspi搭建的一個(gè)臨時(shí)接口,代碼如下
隨后第一步我們直接構(gòu)建一個(gè)套接字socket:
隨后設(shè)置套接字為非阻塞
隨后構(gòu)建http報(bào)表
通過套接字發(fā)送這個(gè)http報(bào)表:
這個(gè)時(shí)候由于設(shè)置了套接字非阻塞,程序不會在這里卡住,會直接往下面執(zhí)行,由于設(shè)置了套接字非阻塞,接受套接字返回?cái)?shù)據(jù)的寫法需要用到try來實(shí)現(xiàn),代碼如下
接受數(shù)據(jù)我們可以寫到QTimer里邊去,QTimer的Pyside2官網(wǎng)介紹地址:https://doc.qt.io/qtforpython-5/PySide2/QtCore/QTimer.html#PySide2.QtCore.PySide2.QtCore.QTimer.setInterval
QTimer的一個(gè)使用范例如下
接下來是訪問sd的socket發(fā)送同步非阻塞http報(bào)文,并使用QTimer來接受數(shù)據(jù)的代碼:
標(biāo)簽: