[Scons-dev] Fix async subprocess execution with proper handling of std* streams
anatoly techtonik
techtonik at gmail.com
Tue Feb 18 11:35:18 EST 2014
Thanks. That would be great. ;)
On Tue, Feb 18, 2014 at 5:21 PM, Kenny, Jason L <jason.l.kenny at intel.com> wrote:
> I will get it pushed… life getting in the way.
>
>
>
> From: scons-dev-bounces at scons.org [mailto:scons-dev-bounces at scons.org] On
> Behalf Of Eugene Leskinen
> Sent: Tuesday, February 18, 2014 7:03 AM
> To: SCons developer list
> Subject: Re: [Scons-dev] Fix async subprocess execution with proper handling
> of std* streams
>
>
>
> Hi Anatoly,
>
>
>
> The code supporting I/O redirection in Parts is located in
> parts/part_logger.py file. Look at
> http://parts.tigris.org/source/browse/parts/trunk/parts/parts/part_logger.py?revision=486&view=markup
>
>
>
> The code uses Python threading module to create threads for each stream and
> then runs a loop in every thready like your code does:
>
>
>
> line = ' '
>
> try:
>
> while line:
>
> line = self.pipein.readline()
>
> if line:
>
> self.output.WriteStream(self.taskId, self.streamId,
> line)
>
> except:
>
> # There was an error... that shouldn't happen, but still it did.
> So we report it
>
> # to the caller and close our pipe end so that spawned program
> won't block
>
> self.error = traceback.format_exc()
>
> self.pipein.close()
>
> self.pipein = None
>
>
>
> Please note that public repo is a bit out-of-date. I hope Jason will find
> time to pull up-to-date version from Intel internal repository.
>
>
>
> 2014-02-18 16:30 GMT+04:00 anatoly techtonik <techtonik at gmail.com>:
>
> On Wed, Feb 12, 2014 at 6:25 PM, Kenny, Jason L <jason.l.kenny at intel.com>
> wrote:
>>> Fix async subprocess execution with proper handling of std* streams.
>>
>> So I fixed the issue with output in Parts. I not saying it could not be
>> clean up some more. However it solves the output issues, and adds coloring
>> (
>> which seems to need some fixing in certain cases.. ie mac mostly) and
>> logging support. It might not be too hard for someone to move the code
>> over
>> to SCons and integrated its usage into SCons.
>
> Do you have, by any chance a description of output issues?
> It seems that I've lost my list during the last Windows partition crash.
>
> Also, can you pinpoint the parts in Parts that are relevant to the issues?
> I may have time to port them over to SCons.
>
> My approach
> https://bitbucket.org/techtonik/absub
> to make subprocess asynchronous by moving processing
> of input/output streams into separate threads. I don't remember why, but the
> work stalled. I remember there was some kind of error that I was not able to
> debug due to distributed nature of the process. I needed to write more tests
> for that, but it is either I run out of time, multithreaded tests were
> complicated
> or I just had an annual Windows filesystem crash.
>
> Now I am thinking about replacing concept of input/output streams with the
> concept of channel, which is a queue of strings with limited size. The queue
> can be rotated to become unlimited. Can be synchronous to wait (block)
> until messages are read if the queue is full. This may help to clear
> confusion
> around all that input output streams handling, pipes and descriptor
> inheritances.
>
> --
> anatoly t.
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> http://two.pairlist.net/mailman/listinfo/scons-dev
>
>
>
>
>
> --
> Regards,
> Eugene Leskinen
>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> http://two.pairlist.net/mailman/listinfo/scons-dev
>
--
anatoly t.
More information about the Scons-dev
mailing list