Scénario : Il existe un serveur A et un client B, et il existe une connexion socket.
Ce que j'écris maintenant est la partie B côté client, le côté serveur est incontrôlable.
Il s'avère que B envoie d'abord un paquet, attend que A renvoie le contenu spécifié, puis B envoie le paquet suivant
def do():
s.send(...)
yield 1
s.send(...)
yield 2
# 接收到数据后的回调
def callback():
global f
next(f)
f=do()
next(f)
Maintenant, je souhaite implémenter un délai d'attente et implémenter le blocage. Une fois que B a envoyé les données, il bloque jusqu'à ce que A renvoie les données (ou génère une erreur s'il ne reçoit pas de retour de A dans les 5 secondes). Veuillez me dire comment y parvenir ?
Avec Tornado, je ne peux pas écrire plus de quelques lignes de code.
Créons d'abord un serveur simple pour faciliter la démonstration :
Ensuite, pour implémenter le Client, la logique de base est de fermer la connexion après un délai d'attente puis de rétablir la connexion :