Re: how to handle threads with webkit

"Salman Toor" <[email protected]>
Newsgroups gmane.comp.python.webware
Message-ID <[email protected]>
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-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.