En Fri, 12 Feb 2010 11:22:40 -0300, Aahz <a...@pythoncraft.com> escribió:
In article <mailman.2422.1265961504.28905.python-l...@python.org>,
Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote:
On 11 Feb 2010 21:18:26 -0800, a...@pythoncraft.com (Aahz) declaimed the
following in gmane.comp.python.general:
In article <mailman.2077.1265524158.28905.python-l...@python.org>,
Gabriel Genellina <gagsl-...@yahoo.com.ar> wrote:
Strange. With Python 2.6.4 I don't need to do that; I'd say the
difference
is in the OS or antivirus (some AV are known to break the TCP stack).
Perhaps, but I've also found that ctrl-C doesn't work on Windows.
Unless the running program makes an I/O call to the console, I don't
think <ctrl-c> gets past the device driver... <G>
That's probably it. It's more annoying for me because I run Windows with
a VM on a Mac, which doesn't have ctrl-break.
On a "real" PC with Windows XP SP3 and Python 2.6.4, with an idle server,
just hitting Ctrl-C was enough:
D:\temp>python -m SimpleXMLRPCServer
Running XML-RPC server on port 8000
Traceback (most recent call last):
File "d:\apps\python26\lib\runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "d:\apps\python26\lib\runpy.py", line 34, in _run_code
exec code in run_globals
File "d:\apps\python26\lib\SimpleXMLRPCServer.py", line 615, in <module>
server.serve_forever()
File "d:\apps\python26\lib\SocketServer.py", line 224, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
KeyboardInterrupt
A slightly more realistic example: a busy, single threaded server. I had
to hit Ctrl-C twice: the first time, KeyboardInterrupt was sent as a Fault
response to the client.
import sys
def busy():
x = 50000
y = x**x
return "Ok"
if sys.argv[1]=='server':
import SimpleXMLRPCServer
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost",
8000),logRequests=False)
server.register_function(busy)
server.serve_forever()
else:
import xmlrpclib
proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
while True:
print "client", proxy.busy()
Maybe the OP's code containes a bare 'except:' clause that swallows
KeyboardInterrupt, or the server is so busy that is always executing a
function handler (and all KeyboardInterrupt become Fault and are sent as a
function response).
Mmm, perhaps that's a bug, a KeyboardInterrupt should bubble up to the
server code, not being treated as an error in computing the function
result.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list