This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2010年11月21日 05:37 by v+python, last changed 2022年04月11日 14:57 by admin.
| Messages (2) | |||
|---|---|---|---|
| msg121865 - (view) | Author: Glenn Linderman (v+python) * | Date: 2010年11月21日 05:37 | |
The CGI interface is a binary stream, because it is pumped directly to/from the HTTP protocol, which is a binary stream.
Hence, cgitb.py should produce binary output. Presently, it produces text output.
When one sets stdout to a binary stream, and then cgitb intercepts an error, cgitb fails.
Demonstration of problem:
import sys
import traceback
sys.stdout = open("sob", "wb") # WSGI sez data should be binary, so stdout should be binary???
import cgitb
sys.stdout.write(b"out")
fhb = open("fhb", "wb")
cgitb.enable()
fhb.write("abcdef") # try writing non-binary to binary file. Expect an error, of course.
|
|||
| msg127574 - (view) | Author: Glenn Linderman (v+python) * | Date: 2011年01月31日 04:43 | |
So since cgi.py was fixed to use the .buffer attribute of sys.stdout, that leaves sys.stdout itself as a character stream, and cgitb.py can successfully write to that. If cgitb.py never writes anything but ASCII, then maybe that should be documented, and this issue closed. If cgitb.py writes non-ASCII, then it should use an appropriate encoding for the web application, which isn't necessarily the default encoding on the system. Some user control over the appropriate encoding should be given, or it should be documented that the encoding of sys.stdout should be changed to an appropriate encoding, because that is where cgitb.py will write its character stream. Guidance on how to do that would be appropriate for the documentation also, as a CGI application may be the first one a programmer might write that can't just use the default encoding configured for the system. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:09 | admin | set | github: 54688 |
| 2020年11月16日 21:55:03 | iritkatriel | set | versions: + Python 3.8, Python 3.9, Python 3.10, - Python 3.1, Python 3.2 |
| 2011年01月31日 04:43:32 | v+python | set | nosy:
fdrake, facundobatista, orsenthil, v+python messages: + msg127574 |
| 2010年11月21日 16:58:06 | pitrou | set | nosy:
+ fdrake, facundobatista, orsenthil versions: + Python 3.1 |
| 2010年11月21日 07:54:24 | v+python | set | type: behavior |
| 2010年11月21日 05:37:14 | v+python | create | |