[Twisted-Python] re: Congrats / a little newbie confusion
Bob Ippolito
bob at redivi.com
Fri Apr 4 12:21:56 MST 2003
On Friday, Apr 4, 2003, at 14:08 America/New_York, Peter Hansen wrote:
> Jeffrey Mathews wrote:
>>
>> As for Peter's question about the need for a CGI.FieldStorage type
>> api, it's
>> really only an issue when you're doing huge multipart mime posts
>> (e.g., file
>> uploads). The idea of passing around those results (potentially multi
>> megabyte) as strings is kind of frightening. That said, I have no
>> grasp on
>> what issues are raised when handling these things asynchronously (the
>> cgi
>> module is all synchronous).
>
> What is it about passing around multi-megabyte data as strings that
> scares
> you? The data is only needed temporarily, I would think, until it is
> written
> to a file. Servers have gobs of memory, and massive file uploads are
> rare... or if they're not, surely the server can have adequate capacity
> to handle the load (memory-wise).
>
> Maybe I'm too naive, but unless I was expecting, say, greater than 10MB
> or 20MB files on a regular basis, I wouldn't think twice about just
> using
> strings. Much simpler than trying to juggle temporary files and
> references
> to them and removing them when appropriate etc.
>
> Is your concern a case of premature optimization?
It's not premature optimization, it's proper design for an async
framework. If for no other reason, large strings take non-trivial
amounts of time to process. For example, on my laptop (which has a gig
of ram): ('a' * 2**20).replace('a', 'b') takes about 0.35 seconds..
Twisted is not threaded, so that's a bad thing to do. Processing
chunks with file-like interfaces is scalable, large strings are
definitely not.
-bob
More information about the Twisted-Python
mailing list