quixote/doc multi-threaded.txt,NONE,1.1

Greg Ward <gward-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]>
Newsgroups gmane.comp.web.quixote.cvs
Message-ID <[email protected]>
Update of /home/cvs/quixote/doc
In directory hewson:/tmp/cvs-serv30146

Added Files:
	multi-threaded.txt 
Log Message:
How to get Quixote to play nice with threads.

--- NEW FILE: multi-threaded.txt ---
Multi-Threaded Quixote Applications
===================================

Starting with Quixote 0.6, it's possible to write multi-threaded Quixote
applications.  In previous versions, Quixote stored the current
HTTPRequest object in a global variable, meaning that processing
multiple requests in the same process simultaneously was impossible.

However, the Publisher class as shipped still can't handle multiple
simultaneous requests; you'll need to subclass Publisher to make it
re-entrant.  Here's a starting point::

  import thread
  from quixote.publish import Publisher

  [...]

  class ThreadedPublisher (Publisher):
      def __init__ (self, root_namespace, config=None):
          Publisher.__init__(self, root_namespace, config)
          self._request_dict = {}

      def _set_request(self, request):
          self._request_dict[thread.get_ident()] = request

      def _clear_request(self):
          try:
              del self._request_dict[thread.get_ident()]
          except KeyError:
              pass

      def get_request(self):
          return self._request_dict.get(thread.get_ident())

Using ThreadedPublisher, you now have one current request per thread,
rather than one for the entire process.


$Id: multi-threaded.txt,v 1.1 2002/10/17 14:06:03 gward Exp $
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.