If the application you're working with requires that you close the socket, then it seems like you should be creating, connecting, sending on, and closing a new socket every ten seconds in response to your flow stats coming in.
It looks like you may be not creating and connecting a new socket after the first run, and are trying to reuse a socket that you'd closed (made possible by the fact that you're saving a reference to an old one as self.sock, which you can never actually reuse since you close it). I put the following code in an app (and then kick it off by calling it in my Component's install()), and it seems to work just fine: def handle_timer (self): import socket self.post_callback(5, self.handle_timer) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("",5000)) sock.send("Hello world!\n") sock.close() Can you test if this seems to work for you? (I just run "nc -lk 5000" to give it something to connect to.) As a sidenote: These calls are blocking, and it's not nice to block the thread. Using Twisted is the preferred solution. But since this is only periodic and is connecting to localhost, etc., I am not sure that's worth worrying about. As I said, it has been a long time since I have looked at NOX's threading stuff, but nothing immediately comes to mind about why this wouldn't work. -- Murphy On Aug 15, 2011, at 2:15 PM, chris oleke wrote: > Murphy, the thing is I'd pretty much want to maintain the sockets that I'm > using at the moment since the third party application is tailored to work > with them. When I send the data from NOX, I have to close the sockets because > the data won't be received on the other end if the sockets remain open. My > flow stats are generated every 10 seconds so my aim is to have them sent > continously. I had previously tried using sock.setblocking(0) but encountered > an error "operation already in progress" so abandoned using it. > > On Sat, Aug 13, 2011 at 2:34 AM, Murphy McCauley <jam...@nau.edu> wrote: > It has been long enough since I've looked at the co-op threading in NOX that > I don't immediately know what the problem you're having with the file > descriptors going away is. You're sure you're not calling close() on them? > You could try setting the socket to non-blocking mode with > sock.setblocking(0). > > It might be possible to get asynccore to work, but I think it'd probably be > some trouble. Twisted, on the other hand, should more or less just work. I > think you can probably look at the NOX webservice stuff for a bit of an > example, but it shouldn't be much different than any other Twisted code. > > Or if you would be okay with communicating with the other process via JSON > strings, you could use jsonmessenger. Look in monitoring.py from the > monitoring component for an example. > > Hope that helps. > > -- Murphy > > On Aug 12, 2011, at 2:03 PM, chris oleke wrote: > >> Hi >> >> >> >> Hopefully this is still within the Nox domain. I have a python application >> that is using sockets to send out flows that I have obtained from a >> flow_stats_in_event to an application external of Nox. This is how I’m doing >> it >> >> self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >> self.sock.connect(("",5000)) >> self.sock.send(repr(flows)) >> self.sock.close() >> >> Unfortunately I can only send the flows once before the sockets close after >> which I get the errors below >> >> self.sock.send(repr(flows)) >> File "/usr/lib/python2.6/socket.py", line 167, in _dummy >> raise error(EBADF, 'Bad file descriptor') >> error: [Errno 9] Bad file descriptor >> >> It’s obviously as a result of trying to send information out on a socket >> that’s been closed. I have tried to look at asyncore and see if I can have >> an asynchronous socket but haven’t had any luck and my application’s seems >> to lock/freeze the few times I have tried. Is there a way I can have the >> socket remain connected so I can have flows sent constantly and also be able >> to receive data when sent from the external application. I would like a >> demonstration as well if it’s possible. >> >> >> >> Thanks >> >> Chris >> >> _______________________________________________ >> nox-dev mailing list >> nox-dev@noxrepo.org >> http://noxrepo.org/mailman/listinfo/nox-dev > >
_______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev