[Checkins] SVN: zc.ngi/trunk/src/zc/ngi/ Cleaned up wordcount example:

Jim Fulton jim at zope.com
Tue Jul 27 14:41:26 EDT 2010


Log message for revision 115128:
  Cleaned up wordcount example:
  
  - don't send END_OF_DATA any more.
  - Use new async implementation wait method to wait for the async loop
    to get cleaned up.
  - Don't pretend the wordcount example will be used with any
    implementation other than async.
  

Changed:
  U   zc.ngi/trunk/src/zc/ngi/async.test
  U   zc.ngi/trunk/src/zc/ngi/tests.py
  U   zc.ngi/trunk/src/zc/ngi/wordcount.py

-=-
Modified: zc.ngi/trunk/src/zc/ngi/async.test
===================================================================
--- zc.ngi/trunk/src/zc/ngi/async.test	2010-07-27 18:41:25 UTC (rev 115127)
+++ zc.ngi/trunk/src/zc/ngi/async.test	2010-07-27 18:41:26 UTC (rev 115128)
@@ -30,7 +30,7 @@
 
     >>> import zc.ngi.wordcount
     >>> import zc.ngi.async
-    >>> port = zc.ngi.wordcount.start_server_process(zc.ngi.async.listener)
+    >>> port = zc.ngi.wordcount.start_server_process()
 
 We passed the listener to be used.
 

Modified: zc.ngi/trunk/src/zc/ngi/tests.py
===================================================================
--- zc.ngi/trunk/src/zc/ngi/tests.py	2010-07-27 18:41:25 UTC (rev 115127)
+++ zc.ngi/trunk/src/zc/ngi/tests.py	2010-07-27 18:41:26 UTC (rev 115128)
@@ -638,7 +638,7 @@
 
     # Start the server and connect to a good port with a bad handler
 
-    port = zc.ngi.wordcount.start_server_process(zc.ngi.async.listener)
+    port = zc.ngi.wordcount.start_server_process()
     addr = 'localhost', port
     zc.ngi.async.connect(addr, BrokenAfterConnect())
 
@@ -659,7 +659,7 @@
 
 def cleanup_async(test):
     zc.ngi.async.cleanup_map()
-    zc.ngi.async.wait(1)
+    zc.ngi.async.wait(9)
 
 def test_suite():
     return unittest.TestSuite([

Modified: zc.ngi/trunk/src/zc/ngi/wordcount.py
===================================================================
--- zc.ngi/trunk/src/zc/ngi/wordcount.py	2010-07-27 18:41:25 UTC (rev 115127)
+++ zc.ngi/trunk/src/zc/ngi/wordcount.py	2010-07-27 18:41:26 UTC (rev 115128)
@@ -28,12 +28,11 @@
 import time
 
 import zc.ngi
+import zc.ngi.async
 import zc.ngi.message
 
 _lock = threading.Lock()
 _lock.acquire()
-exit = _lock.release
-run = _lock.acquire
 
 logger = logging.getLogger('zc.ngi.wordcount')
 
@@ -53,11 +52,11 @@
             data, self.input = self.input.split('\0', 1)
             if data == 'Q':
                 connection.write('Q\n')
-                connection.write(zc.ngi.END_OF_DATA)
-                connection.control.close(lambda c: exit())
+                connection.close()
+                connection.control.close()
                 return
             elif data == 'C':
-                connection.write(zc.ngi.END_OF_DATA)
+                connection.close()
                 return
             elif data == 'E':
                 raise ValueError(data)
@@ -72,16 +71,15 @@
             logger.debug("server handle_close(%r, %r)", connection, reason)
 
 def serve():
-    mod, name, port, level = sys.argv[1:]
-    __import__(mod)
+    port, level = sys.argv[1:]
     logfile = open('server.log', 'w')
     handler = logging.StreamHandler(logfile)
     logging.getLogger().addHandler(handler)
     logger.setLevel(int(level))
     logger.addHandler(logging.StreamHandler())
     logger.info('serving')
-    getattr(sys.modules[mod], name)(('localhost', int(port)), Server)
-    run()
+    zc.ngi.async.listener(('localhost', int(port)), Server)
+    zc.ngi.async.wait(11)
     logging.getLogger().removeHandler(handler)
     handler.close()
 
@@ -127,11 +125,9 @@
         else:
             print "Server still accepting connections"
 
-def start_server_process(listener, loglevel=None):
+def start_server_process(loglevel=None):
     """Start a server in a subprocess and return the port used
     """
-    module = listener.__module__
-    name = listener.__name__
     port = get_port()
     env = dict(
         os.environ,
@@ -140,14 +136,14 @@
     if loglevel is None:
         loglevel = logger.getEffectiveLevel()
     os.spawnle(os.P_NOWAIT, sys.executable, sys.executable, __file__,
-               module, name, str(port), str(loglevel),
+               str(port), str(loglevel),
                env)
     addr = 'localhost', port
     wait(addr)
     return port
 
 def stop_server_process(connect, addr):
-    zc.ngi.message.message(connect, addr, 'Q\0', lambda s: s == 'Q\n')
+    zc.ngi.message.message(connect, addr, 'Q\0')
     wait(addr, up=False)
     log = open('server.log').read()
     os.remove('server.log')



More information about the checkins mailing list