Salman Toor wrote: > I still have another question. If we are using commands.getoutput() > function inside the run() function then how do we handle the > processes. Because this senario again hangs the Application Server.
I think this is because your thread implicitely (in commands.getoutput) executes a Python import, while you are currently importing the servlet. This may create a deadlock with the Webware import magic for servlets. So you may have to look for a better place to start your servlets. It depends a bit on what kind of threads you have: Once per page hit, or continuously? In the former case, just run the threads from the servlet awake() method. In the latter case, the cleanest solution would be to start your threads outside the servlet, e.g. in the initialization code of your Webware context. Here is an example that creates any number of such background threads which execute different os commands in different intervals, and a servlet displaying the result of these commands. ------ Put this in Examples/__init__.py --------- print "Loading Examples context" import commands from threading import Thread, Event class MyThread(Thread): def __init__(self, interval, cmd): Thread.__init__(self) self.interval = interval self.cmd = cmd self.result = None self.stop_event = Event() print 'thread <%s> initialized' % self.cmd def run(self): print 'thread <%s> startup' % self.cmd while not self.stop_event.isSet(): self.result = commands.getoutput(self.cmd) print 'thread <%s>: %s' % (self.cmd, self.result) self.stop_event.wait(self.interval) def stop(self): if self.isAlive(): print 'thread <%s> shutdown' % self.cmd self.stop_event.set() self.join(1) my_threads = None def contextInitialize(app, ctxPath): global my_threads my_threads = [MyThread(1, 'date'), MyThread(3, 'who')] for t in my_threads: app.addShutDownHandler(t.stop) t.start() ------ Put this in Examples/ShowCmd.py --------- from ExamplePage import ExamplePage class ShowCmd(ExamplePage): def writeContent(self): from Examples import my_threads self.write('<h1>Thread Test</h1>') for t in my_threads: self.write('<h2>Thread "%s"</h2>' % t.cmd) self.write('<pre>%s</pre>' % t.result) --------------------------------------------------- Now you can watch the results on http://localhost:8080/ShowCmd. -- Christoph ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Webware-discuss mailing list Webware-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/webware-discuss