Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Attendre la réponse à une connexion

+1 vote

J'ai une méthode qui réalise la connexion à un device bluetooth.
Je veux que cette méthode sorte soit une fois la connexion faite, soit sur timeout.

La connexion est faite par une dll extérieure (dll C#, wrappée via la lib pydotnet). Lors de la connexion, je passe à cette dll une instance d'un listener, possédant une méthode on_connection.

def connect():
    WrapperDotNet.connect(connection_listener)

class listener():
     def on_connection(self, device_bluetooth):
         pass

Comment faire pour que l'invocation de on_connection par la dll provoque le débloquage de ma méthode connect() ?

J'ai pensé à un générateur, instancié par la méthode connect. La méthode on_connection pourrait ensuite envoyer la valeur du device bluetooth via un gen.send(). Mais je suis un peu paumé dans les subtilités des générateurs, je ne suis même pas sûr que ca puisse faire le job. J'ai regardé également du côté des coroutines, c'est peut-être une piste ?

demandé 28-Mar par toub (408 points)
edité 28-Mar par toub

2 Réponses

0 votes

Le décorateur suivant pour ta fonction devra faire l affaire :

retry(retryonexception=lambda e: isinstance(e, Timeout), stopmaxattemptnumber=3, waitfixed=150)

répondu 28-Mar par anonyme

Apres avoir bien regardé du côté des coroutines (j'avais envie de m'y mettre), ca me parait pas adapté à mon cas, je suis parti sur des threading.Event, ça répond très bien à mon use case.
J'avoue n'avoir pas compris ta réponse, il s'agit d'un décorateur fournit par défaut par python ?

+1 vote
répondu 31-Mar par anonyme
...