[Twisted-Python] Sending large files over network with perspective broker
Jason J. W. Williams
jasonjwwilliams at gmail.com
Sat May 22 13:23:54 MDT 2010
Does send_chuck or callRemote block?
-J
On Sat, May 22, 2010 at 12:35 PM, Gabriele Lanaro
<gabriele.lanaro at gmail.com> wrote:
> I'm writing a gtk application that transfer files in LAN. The application
> has a server and can spawn different clients (one for each file to send) .
> The flow between client and server is something like that:
>
> client asks pb.Root a FileSender ( that is conceptually a perspective).
> The client receive the file sender.
> The client declares the size and the basename of the file he is sending,
> requiring authorization to send.
> The server perform authorization and passes to the client a unique key to
> start the file transfer.
> The client performs the file transfer in "chunks". Each chunk is passed
> throught a remote method, send_chunk.
>
> The file transfer is done "recursively", each send_chunk deferred generates
> a new deferred for the next chunk.
>
> Some pseudocode to understand better my solution.
>
> FileSender:
> remote_get_auth():
> remote_request_for_sending(filename, size): return secret
> remote send_chunk(secred, chunk_no, data): save the chunk somewhere
>
> Client()
> proceed_sending():
>
> chunk_tot = CHUNK_TOT
> chunk_no = 0
>
> def send(_)
> if chunk_no == CHUNK_TOT: return
> else:
> ... read data...
> d = filesender.callRemote("send_chunk", secret,
> chunk_no, data)
> d.addCallback(send)
>
> I've done in this way so a new chunk is sent only if the previous chunk was
> sent.
> The problem of this approach is that this blocks my GUI, I can't figure out
> why because I'm just generating deffereds so it souldn't block.
>
> I've seen the page about Consumer and Producer, however I can't figure out
> how to integrate producer and consumers in a Perspective Broker based code.
>
> Can someone help me?
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
More information about the Twisted-Python
mailing list