You misunderstood. I said you should use a thread. If your thread needs to communicate information back to the main thread, it can use core.callLater() to do that.
-- Murphy On Jul 24, 2013, at 12:57 AM, Hong Wayne wrote: > > > ---------- Forwarded message ---------- > From: Hong Wayne <[email protected]> > Date: 2013/7/24 > Subject: Re: [pox-dev] POX disconnected to OpenFlow switch > To: Murphy McCauley <[email protected]> > > > Hello Murphy: > > > Thank you for replying. > > In your suggestion, I can use core.callLater() to execute time consuming > program, > > But in POX Wiki, The utility for Timer is almost same like callLater. > > So I use Timer to trigger time consuming program(_handle_timer_temp) like > below: > Timer( float(self.interval), _handle_timer_temp, recurring=False, > args=(core.openflow, self.return_nu_rows, self.return_switch_info)) > > But still get disconnect form OF switch, did I have any wrong about this > opinion? > > Can you give me more information or examples? Thanks for helping again. > > > > 2013/7/24 Murphy McCauley <[email protected]> > Ten seconds is much longer than you want to stall the main thread. You > should do time consuming computations in another thread. If they need to > communicate back to the main thread, there are a number of ways to do it... > usually, it's sufficient to just call core.callLater() and pass the data as > arguments when your time consuming computation finishes. > > -- Murphy > > > On Jul 24, 2013, at 12:13 AM, Hong Wayne wrote: > >> Sorry about that. >> >> POX command line: >> ./pox.py forwarding.l2_learning openflow.of_01 --address=ip_address >> --port=6633 samples.pretty_log log.level --packet=WARN myself_module >> --interval=2 >> >> POX version: betta >> >> OF switch: Open vSwitch 1.9 >> >> And the code in myself_module is done the things that execute algorithm and >> update database(Written in _handle_timer_temp callback function) which cost >> about ten seconds and myself_module will be triggered by >> _handle_ConnectionUp like below: >> >> class temp_class (object): >> >> def __init__ (self, interval): >> >> core.openflow.addListeners(self) >> self.interval = interval >> db = MySQLdb.connect(host="", user="", passwd="", db="") >> cursor = db.cursor()#Create instance to access DB >> cursor.execute("SELECT dpid, Dead, Maskbit, c_subnet_start, >> c_subnet_end, Load_balancing_algorithm FROM Pica8_Switch_Info ") >> self.return_nu_rows = cursor.rowcount >> self.return_switch_info = cursor.fetchall() >> db.close() >> >> def _handle_ConnectionUp (self, event): >> >> log.debug("Default Connection %s" % (event.connection,)) >> >> Timer(float(self.interval), _handle_timer_temp, recurring=False, >> args=(core.openflow, self.return_nu_rows, self.return_switch_info)) >> >> >> def launch (interval): #User parameters >> """ >> Starts modules >> """ >> core.registerNew( Wayne_class, interval) >> >> >> >> >> 2013/7/24 Murphy McCauley <[email protected]> >> I don't think you've provided enough information for an explanation to be >> offered. >> >> Please see the final question on the POX wiki's FAQ for guidance to help us >> help you. >> >> -- Murphy >> >> On Jul 23, 2013, at 9:23 PM, Hong Wayne wrote: >> >> > Dear all: >> > >> > >> > I faced a problem when OpenFlow switch connect to POX and some module I >> > modified triggered at this time(ConnectionUp event) and cost some times. >> > >> > When this module was executed completely, the POX command line appear the >> > messages like below: >> > >> > [openflow.of_01] already disconnected! >> > [openflow.of_01] closed connection >> > [openflow.of_01] disconnected >> > >> > So I want to ask why these error message happened? Whether POX run some >> > module I didn't notice? >> > >> > Thanks for helping. >> > > >
