Странное поведение requests в pyqt5 в связке с socketserver.TCPServer

Есть очень простой код клиента

import sys, requests
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtWidgets, QtGui, QtCore
from ui import Ui_MainWindow

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.btnStart.clicked.connect(self.on_btnStart_clicked)

    def on_btnStart_clicked(self):         #обработчик нажатия
        r = requests.post("http://localhost:8080", data='dl_')

app = QApplication(sys.argv)
calc = MainWindow()
calc.show()
sys.exit(app.exec_())

и сервера

import socketserver
from http.server import BaseHTTPRequestHandler

class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.end_headers()
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length).decode() #получаем данные
        print(body)   

def main():
    with socketserver.TCPServer(("", 8080), Handler) as httpd:
        print("server has been started")
        httpd.serve_forever()
main()

GUI И нужно по нажатии на кнопку осуществить requests.post() - запрос к серверу и все в порядке. Но почему-то по окончании requests.post()-запроса (и отлавливании его в do_POST()-метода на сервере) сразу идет выполнение строки sys.exit(app.exec_()) на клиенте и СТРОКА requests.post() выполняется СНОВА!!!! и так три раза подряд!! Почему так? запрос успешен, зачем тогда появляется этот цикл, и сервер вынужден трижды принимать одно и тоже! Проверял и на винде и на мак ос. Как исправить странную ситуацию?


Ответы (1 шт):

Автор решения: Max Keller

нужно открыть сгенерированный файл интерфейса с классом Ui_MainWindow(object), и удалить строку QtCore.QMetaObject.connectSlotsByName(MainWindow)

→ Ссылка