[Pythonmac-SIG] Re: PythonCGISlave update

Noboru Yamamoto noboru.yamamoto@kek.jp
Tue, 28 Mar 2000 22:37:59 +0900


This is a multi-part message in MIME format.
--------------01D7343D254E42BD68C609FA
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

Hi,

Thanks for a PythonCGIServer.py program. That is a program I wanted for
a while.
I added a little enhancement to the program. It now can send back data
longer than
32 KB to WebStar server. It uses  a <SEND_PARTIAL> mechanism to send
back data to the WWW server.

I have tested it with WebStar 4.0(demo version) and it should work with
WebStar 3.x.

An attached tar.gzipped file includes:
	PythonCGISlave.py 		# Original PythonCGISlave.py
	PythonCGISlave.rsrc		
	PythonCGIServer.py		# Modified version supporting <SEND_PARTIAL>.
	PythonCGIServer.rsrc
	WebStarClass.py		# Defines a WebStar class to send partial data
	WebSTAR_Suite.py		# These files are created by gensuitemodule program.
	W_2a_API_Suite.py
	Miscellaneous_Standards.py

Usage of PythonCGIServer.py is same as it of PythonCGISlave.py. 

> 
> Here's a bugfix: I assigned to os.environ instead of modifying the dict in
> place. This screwed up cgi.py which keeps a reference to os.environ in a
> default arg...
> 
> Just
> 

Enjoy,

Noboru Yamamoto
KEKB control group
KEK, JAPAN
--------------01D7343D254E42BD68C609FA
Content-Type: application/gzip; x-mac-type="477A6970"; x-mac-creator="477A6970";
 name="PythonCGIServer.tar.gz"
Content-Transfer-Encoding: base64
Content-Description: Unknown ドキュメント
Content-Disposition: inline;
 filename="PythonCGIServer.tar.gz"

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
pd939fsXyrEN9QDIAAA=
--------------01D7343D254E42BD68C609FA--