[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