>
> Note the assert. If, for any reason, the http_server doesn't get
> registered with asyncore's socket map, then asyncore.loop() will exit
> automatically, just as you described. That's why the assert is there:
> to test whether this is the case.
>
> from medusa import http_server
> import asyncore
>
> PORT = 8080
> server = http_server.http_server('', PORT)
> assert len(asyncore.socket_map) > 0, 'server not registered!'
> asyncore.loop()
>
> What happens when you execute it?
>
Gives me the following:
C:\appservers\Quixote-1.0c1\server>test1.py
warning: Computing default hostname
info: Medusa (V1.11) started at Fri Jun 18 16:19:44 2004
Hostname: vinjvinj
Port:8080
Traceback (most recent call last):
File "C:\appservers\Quixote-1.0c1\server\test1.py", line 6, in ?
assert len(asyncore.socket_map) > 0, 'server not registered!'
AssertionError: server not registered!
> ===========
>
> Here's a slightly more involved example, that includes a running
> execution trace, starting just before the asyncore.loop() call:
>
> from medusa import http_server
> import asyncore
> import inspect
> import sys
>
> def trace_func(frame, event, arg):
> fn, ln, funcname, context, idx = inspect.getframeinfo(frame)
> fnln = ('%s%s:%s' % (' ' * 25, fn, ln))[-25:]
> if context is None:
> print '%s ### %s' % (fnln, event)
> else:
> for line in context:
> print '%s >>> %s' % (fnln, line.rstrip())
>
> return trace_func
>
> PORT = 8080
> server = http_server.http_server('', PORT)
> sys.settrace(trace_func)
> asyncore.loop()
>
>
> And then it pauses, since the select.select() call is waiting for an
> incoming request.
>
> What do you get when you try this second example?
Gives the following:
C:\appservers\Quixote-1.0c1\server>test1.py
warning: Computing default hostname
info: Medusa (V1.11) started at Fri Jun 18 16:22:35 2004
Hostname: vinjvinj
Port:8080
hon23\lib\asyncore.py:180 >>> def loop(timeout=30.0, use_poll=0, map=None):
hon23\lib\asyncore.py:181 >>> if map is None:
hon23\lib\asyncore.py:182 >>> map = socket_map
hon23\lib\asyncore.py:184 >>> if use_poll:
hon23\lib\asyncore.py:190 >>> poll_fun = poll
hon23\lib\asyncore.py:192 >>> while map:
hon23\lib\asyncore.py:192 >>> while map: