Мой асинхронный сервер Python не остановится даже после отключения всех клиентовPython

Программы на Python
Anonymous
Мой асинхронный сервер Python не остановится даже после отключения всех клиентов

Сообщение Anonymous »

Мой асинхронный сервер не отключится, если клиент подключился, даже если клиент закроет сокет. Почему это не остановится? Если клиент не подключается в течение 10 секунд, он отключается и программа закрывается.
Моя процедура:
  • запустить server.py
  • запустите client.py — клиент подключается и немедленно закрывает сокет.
Результат:
  • сервер зависает и не закрывается
# server
from os import path as ospath
import asyncio
import socket as Socket
import logger as log

logger = log.getLogger(fileName=ospath.join('log', 'server.log'), initialize=True)

class Client():
def __init__(self, socket:Socket=None, addr:tuple=None) -> None:
self.socket = socket
self.addr = addr
self.connected = False

class App():
def __init__(self) -> None:
self.quit = False
self.clients = []

async def clientHandler(reader, writer):
logger.info('client handler starting')

async def main():
logger.info("server app starting")
app = App()

# start socket server
ipaddr = Socket.gethostbyname(Socket.gethostname())
port = 32843
logger.info(f'starting socket server ({ipaddr}:{port})')
server = await asyncio.start_server(clientHandler, ipaddr, port=32843)

logger.info('waiting for client to connect...')
await asyncio.sleep(10)
logger.info('closing server')
server.close()

await server.wait_closed()
logger.info('server closed')

if __name__ == '__main__':
asyncio.run(main())

# client
import socket

dest_ip = socket.gethostbyname(socket.gethostname())
dest_port = 32843
encoder = "utf-8"

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((dest_ip, dest_port))

client_socket.shutdown(socket.SHUT_RDWR)
client_socket.close()


Подробнее здесь: https://stackoverflow.com/questions/790 ... sconnected

Вернуться в «Python»