On 3 , 20:08, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > On Tue, 03 Jul 2007 15:51:30 -0000, ddtm <[EMAIL PROTECTED]> wrote: > >On 3 , 17:55, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > >> On Tue, 03 Jul 2007 13:44:34 -0000, ddtm <[EMAIL PROTECTED]> wrote: > >> >On 3 , 16:01, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > >> > [snip] > > >> >Thank you very much! It's a very useful information. One more > >> >question: can I cancel the DelayedCall using its ID (it is returned > >> >from callLater(...)) from another function? In example bot there are > >> >two functions: > >> >def joined(self, channel): > >> > ... > >> >def privmsg(self, user, channel, msg): > >> > ... > >> >For example, I add callLater(...) to joined(...) function and I'd like > >> >to cancel this in privmsg(...) function. What should I do? > > >> Yep. The object callLater returns has a `cancel' method (some others, too) > >> which will prevent the function from being called at the scheduled time. > > >> Jean-Paul > > >I know what you are talking about, but the question is: How can I > >cancel scheduled task in function that differs from > >function where I scheduled the task? Demo bot on Twisted website has a > >class with a bunch of predefined functions joined(...), privmsg(...) > >and so on. I can't see any method of communicating these functions. > >I'm new to Python and to Twisted framework. > >The task is: > >to call callLater(...) in joined(...) > >to cancel the task in privmsg(...) on special condition > > You need to preserve a reference to the object. For example: > > class IRCBot(Whatever): > def joined(...): > self.announceJoinedCall = reactor.callLater(...) > > def privmsg(...): > self.announceJoinedCall.cancel() > self.announceJoinedCall = None > > This skips over a bunch of details (what happens on multiple calls to > joined, what happens if privmsg is called after announceJoinedCall has > run, etc) but I hope it demonstrates the basic idea. > > Jean-Paul
Thank you! Everything works great! -- http://mail.python.org/mailman/listinfo/python-list