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 <[email protected]> wrote: > On Mon, Oct 26, 2009 at 11:44 PM, naman jain <[email protected]> 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 > [email protected] > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >
_______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
