Найти - Пользователи
Полная версия: Pyqt + Asyncio
Начало » Python для новичков » Pyqt + Asyncio
1 2
doza_and
Amperandus1
Не знаю насколько правильное решение
скорее всего неправильное
https://gist.github.com/nvgoldin/30cea3c04ee0796ebd0489aa62bcf00a
У вас работает пока вы не попали моментом закрытия на обработку очередного запроса сервером.
Amperandus1
К сожалению

18.5.1.12. UNIX signals
Availability: UNIX only.
PEHDOM
Amperandus1
Есть ли способ подружить pyqt и asyncio?

Задача: из gui сделать две кнопки - старт и стоп сервера. Код сервера запускается из QThread. Сделан на async/await. По отдельности все ок. Вместе не получается.
зачем вам этот геморой? сервер должен быть отдельно, ГУИ отдельно. А сервер в отдельном потоке с ГУИ идея так себе..
По нажатию кнопки “старт” ГУИ запускает новый процесс с сервером, запоминает его pid, по нажатию кнопки “стоп”, останавливает его штатно, или просто убивает процесс по таймауту, если сервер не скушал вовремя команду стоп.
Amperandus1
Нужен обмен между сервером и GUI. Ну и попрактиковаться в том числе.

     async def serverInit(self, sigServ):
        self.signal = sigServ
        self.run = True
        self.server = await asyncio.start_server(self.readFromServer, self.host, self.port)
        await self.server.serve_forever()
    async def readFromServer(self, reader, writer):
        self.writers.append(writer)
        data = await reader.read(1024)
        if(self.run == True):
            self.signal.emit(f'Received: {data.decode()!r}')
        writer.close()
    def stop(self):
        self.run = False
        for w in self.writers:
            w.close()
        time.sleep(1)
        self.server.close()

Вот как то так включается / выключается и соединения не висят
PEHDOM
Amperandus1
Нужен обмен между сервером и GUI.
для этого есть: сокеты, http(s), pipe, брокеры сообщений типа RabbitMQ или ZeroMQ, shared memory, и пр..
https://docs.python.org/3.8/library/ipc.html
На крайний случай смотрите в сторону asyncio.subprocess хотябы.

Amperandus1
Ну и попрактиковаться в том числе.
в данном случае вы практикуетесь в скрещивании ежа с ужом… лучше попрfктикйтес в межпроцессовой коммуникации, будет больше пользы , ИМХО.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB