[Twisted-Python] LoopingCall question : ping w/ timeout using shared variable -> problem
Hello everyone! I have written some code uses a LoopingCall to send a "ping" at regular intervals. If it hasn't received an answer before the next call, it notifies me that the destination isn't available, if it does then it does nothing. I am getting lots of "unavailables" on hosts that are, I tried augmenting the timeout (the ping interval) and it doesn't change anything. I think what is happening is I'm using a simple variable to keep the availability state and that since protocol and the LoopingCall's callback both access the variable, this causes problems. Is there a better way of doing things or am I bound to use some sort of locking mechanism? If I have to use locking, which one do you recommend? Thank you, Gabriel
Gabriel Rossetti wrote:
Hello everyone!
I have written some code uses a LoopingCall to send a "ping" at regular intervals. If it hasn't received an answer before the next call, it notifies me that the destination isn't available, if it does then it does nothing. I am getting lots of "unavailables" on hosts that are, I tried augmenting the timeout (the ping interval) and it doesn't change anything. I think what is happening is I'm using a simple variable to keep the availability state and that since protocol and the LoopingCall's callback both access the variable, this causes problems. Is there a better way of doing things or am I bound to use some sort of locking mechanism? If I have to use locking, which one do you recommend?
Thank you, Gabriel
I tried using a reactor.callLater call and if it fires then it notifies me (unavailable) and if I get the response I cancel it and start over, this seams like a better approach. Gabriel
participants (1)
-
Gabriel Rossetti