For my next attempt, I dug in to find out how to terminate the paster
server via Ctrl-C. Turns out there is a server flag to inidcate
terminating the server, the trick is how to get access to it. I
couldn't figure anything reasonable out so this is how I did it in the
end:
In my setup.py I made my own "paste.server_runner":
[paste.server_runner]
my_http = MyProj.lib.httpserver:server_runner
Then I wrote a replacement for the
ThreadPoolMixIn.process_request_in_thread so that I could set the
Paster shutdown flag if my TG2 app requested a shutdown. Then my
server_runner just needs to ensure my repalcement function is
installed before calling the paster-provideed server_runner. (my
process request replacement of course calls the original version as
well, it only sets the self.running state to false if my app requested
it)
i.e. something like this:
from paste.httpserver import server_runner as original_server_runner
my_app_running = True
original_process = None
def replacement_for_process_request_in_thread(self, request,
client_address):
original_process(self, request, client_address)
self.running &= my_app_running
def server_runner(*args, **kwargs):
if original_process is None:
original_process = ThreadPoolMixIn.process_request_in_thread
ThreadPoolMixIn.process_request_in_thread =
replacement_for_process_request_in_thread
return origianl_server_runner(*args, **kwargs)
Not very elegant but it seemed to do what I wanted in the moment. I
suppose this approach really becomes more of a Paster question and of
course only deals with the thread-pooled server, not to mention relies
on a module-level data item.
Still looking for better solutions if anyone has them :-)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears Trunk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/turbogears-trunk?hl=en
-~----------~----~----~----~------~----~------~--~---