Thank You very much.

It sloves the problem.

Salman Toor.


On 1/15/07, Christoph Zwerschke <[EMAIL PROTECTED]> wrote:
> 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
>

-------------------------------------------------------------------------
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

Reply via email to