Issue 1562193: IDLE Hung up after open script by command line... (original) (raw)

Hello,

I wrote that code in python and saved as prx.py: --- CUT --- from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from time import strftime, gmtime import urllib2 import thread from sys import stdout class RequestHandler(BaseHTTPRequestHandler): def serve(self): print "%s %s %s\r\n%s" % (self.command, self.path,
self.request_version, self.headers) header={} header["content-length"]=0 for i in str(self.headers).split("\r\n"): j=i.split(":", 1) if len(j)==2: header[j[0].strip().lower()] = j[1].strip() content=self.rfile.read(int(header["content- length"])) print content url="http://faramir2.prv.pl" u=urllib2.urlopen(url) for i,j in u.info().items(): print "%s: %s" % (i,j) self.server_version = "Apache" self.sys_version = "" self.send_response(200) self.send_header("Content-type", "text/html; charset=ISO-8859-2") self.send_header("Connectin", "close") self.end_headers() def do_POST(self): self.serve() def do_HEAD(self): self.serve() def do_GET(self): self.serve() address = ("", 80) server = HTTPServer(address, RequestHandler) thread.start_new_thread(server.serve_forever, () ) --- CUT ---

When I right click on that file and select "Edit with IDLE" it opens. Then
when I push F5 the script is running. Python Shell is restarting. But
when I try to connect by browser to http:// localhost:80/ IDLE Hung-up. I
don't see that hung ups when I open IDLE from shortcut and then in IDLE
open file prx.py and run it works normally - good. IDLE does't hung up.

I don't know why it works like that, but I think that it's bug..

Python version: 2.5c2 Tk version: 8.4 IDLE version: 1.2c2 OS Version: Microsoft Windows XP Professional with SP2


Again:


regards, Marek

Well, the issue obviously only happens when IDLE is running without a subprocess.

The code you pasted is unindtented so I'm not going to try it out...

My guess would be that your server is blocking in a way that it blocks all threads. This is why, when it is run in the same process as IDLE's GUI, IDLE hangs. However, when you run IDLE with a subprocess, it's the subprocess which is blocked, so IDLE works normally. (this is what the subprocess is there for :)

In any case, IDLE is behaving just fine here. This isn't a bug in IDLE.

This could be a bug with the thread module, or a bug in BaseHTTPServer, or several other places. But it is most likely caused by some misunderstanding on your part of blocking operations, threads, and the interaction between them.

You should have tried posting this on c.l.py before posting a bug on SF, and I suggest you do so now.