[Twisted-Python] Large Transfers

Uwe C. Schroeder uwe at oss4u.com
Sat May 10 12:45:44 EDT 2003


Ok, I think we all agree that changing Twisted internally to reach a certain 
goal isn't the good choice here. It would be if the benefit was for 
everyone's use.
Asuming I have a pb connection open.
(snippet)
p is the pb.Perspective
parameters is a "small" parameterset (a couple of int's or so)
resultset is [ int, int, string, huge string ]

p.callRemote('getResult',(parameters)).addCallbacks(ok, nok)

def ok(resultset):
	do something with the resultset here  

def nok(error):
	throw error in UI here

If the above is the code, how could I change it using pagers ?
I need the int,int,string result together with the "huge string" result. I 
don't want to use self.int1, self.int2 etc. constructs since it's temporary 
data, so I'd have to give the small results as parameters to the callback 
being called when paging the large part finishes. I'd also need an error 
callback, which I can't find in the pager implementation at all. The "huge 
String" will allways be a string, since the server side will compress 
(possibly encrypt) and base64 encode it anyways.
The current user feedback implementation isn't really one, so maybe I can even 
improve here. Currently it behaves like the netscape or mozilla logo - it 
moves until the data is there. If I can hook into the pager I might be able 
to give real feedback in form of a progress bar or so.

Any ideas ?

On Saturday 10 May 2003 08:36 am, Andrew Bennetts wrote:
> On Sat, May 10, 2003 at 08:20:37AM -0700, Uwe C. Schroeder wrote:
> > You're right, it doesn't. However it still requires several calls to
> > transfer the whole set. :-( And it has another problem. The pager makes
> > it hard to give the user some response while uploading/downloading. The
> > UI gets stuck, or at least appears to be since nothing is happening.
>
> (Untested code)
>
> class ProgressReportingStringPager(StringPager):
>     def __init__(self, ui, *args, **kwargs):
>         self.ui = ui
>         StringPager.__init__(self, *args, **kwargs)
>
>     def nextPage(self):
>         StringPager.nextPage(self)
>         self.ui.reportProgress(self.pointer/len(self.string))
>
> I haven't tried, but it looks like something like that code could easily
> give you progress reporting from your pager.  The paging code is really
> quite simple.
>
> -Andrew.
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

-- 
	UC

--
Open Source Solutions 4U, LLC	2570 Fleetwood Drive
Phone:  +1 650 872 2425		San Bruno, CA 94066
Cell:   +1 650 302 2405		United States
Fax:    +1 650 872 2417





More information about the Twisted-Python mailing list