[Twisted-Python] Regarding Twisted Matrix

naman jain namanvit at gmail.com
Tue Oct 27 06:35:49 EDT 2009


I tried to implement this:

parent_conn, child_conn = Pipe()

f = defer.Deferred()
f = threads.deferToThread(start_test.main_func, SCRIPT_PATH,
TEMP_OUTPUT_PATH, self.output_name, child_conn)

response = parent_conn.recv()
print response //prints like: initialization done
self.transport.write(response)

response = parent_conn.recv()
print response // configuration done
self.transport.write(response)

But get the same output ie all status messages concatenated and sent at
once.!

[Do we need to put some deffered/callback  mechanism on parent_conn.recv()
??
as that is the call blocking the thread waiting for reading.]

Any ideas ? How is such stuff done in twisted servers??

Naman


On Tue, Oct 27, 2009 at 7:03 AM, Nathan <nathan.stocks at gmail.com> wrote:

> On Mon, Oct 26, 2009 at 11:44 PM, naman jain <namanvit at gmail.com> wrote:
> > Hi,
> >
> > I have a client server model in twisted, where the server spawns a thread
> (
> > basically a test script in python that runs for about 20 mins)
> > I want to track the progress of the thread, and send the progress to the
> > client back
> >
> > So, I write something like this in my server:
> >
> > parent_conn, child_conn = Pipe()
> > thread = Process(target = start_test.main_func, args=(SCRIPT_PATH,
> > TEMP_OUTPUT_PATH, self.output_name, child_conn))
> > thread.start()
> >
> > response = parent_conn.recv()
> > print response //prints like: initialization done
> > self.transport.write(response)
> >
> >
> > response = parent_conn.recv()
> > print response // configuration done
> > self.transport.write(response)
> >
> > .
> > .
> > .
> >
> > thread.join()
> >
> >
> > But the transport.write calls don't send at the same time. instead they
> wait
> > for the thread to finish (coz of thread.join) and then append all the
> > response and send it back; like "initialization doneconfiguration
> > done...done"
> > thereby defeating the purpose of creating a thread.
> >
> > How do I give the control to the reactor to write the data back, and
> still
> > keep the thread running?
> > or is there any other way these kinda of progress can be tracked ?
> > I am kinda stuck with this :(
>
> I'm no expert with threads, but I don't see any deferToThread in
> there, which is what people on this list tend to mention whenever
> threading comes up.  Perhaps you need to switch to the "twisted way"
> to create your thread?
>
> http://twistedmatrix.com/documents/8.2.0/api/twisted.internet.threads.html
>
> ~ Nathan
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20091027/4fa18fef/attachment.htm 


More information about the Twisted-Python mailing list