Время для принятия соединения - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу установить время приема соединения от сокета.

Когда я использую s.accept(), он ожидает установления соединения. Я хочу, чтобы мой сервер принимал подключения в течение ограниченного времени, затем выполните процедуры, а затем снова принимает подключения.

Псевдо-код

Accept connection for 0.1 sec
Procedure()
Accept connection for 0.1 sec
Procedure()
.
.
.

Я использую python 3.7.0 в Windows 10.

1 Ответ

0 голосов
/ 12 ноября 2018

очень простая модификация примера из библиотеки socket:

import socket

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
TIMEOUT = 0.1

while True:
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.bind((HOST, PORT))
            s.listen(1)
            s.settimeout(TIMEOUT)
            conn, addr = s.accept()
            with conn:
                print('Connected by', addr)
                data = conn.recv(1024)
                if data:
                    whatever_procedure(data)
    except socket.timeout:
        print(f'Timeout occurred after {TIMEOUT}')
        your_procedure_in_case_timeout()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...