<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>1.</div><div>You should reset  <span style="font-family: arial; white-space: pre-wrap;">self.in_error=False in </span><span style="font-family: arial; white-space: pre-wrap;">__retry_process to get </span>

<!--StartFragment--><span style="font-family: arial; white-space: pre-wrap;">__retry_process called again , as a good practice , I would get ride of </span>

<!--StartFragment--><span style="font-family: arial; white-space: pre-wrap;">self.in_error</span></div><div>and use </div><!--StartFragment--><pre>if (process_state == QtCore.QProcess.NotRunning) and self.current_try < 5</pre><div>instead .</div><div>2. </div><div>If the above solution didn't work, maybe there is a bug with PySide, please give a try with PyQt5.</div><!--StartFragment--><!--EndFragment--><!--EndFragment--><!--EndFragment--><!--EndFragment--><div><div><br></div></div><br><!--StartFragment--><pre>
<br><!--EndFragment-->

<div><br></div>:</pre><!--EndFragment--><div><br></div><div style="position:relative;zoom:1"></div><div id="divNeteaseMailCard"></div><br><pre><br>At 2019-06-01 15:26:49, "Frank Rueter | OHUfx" <frank@ohufx.com> wrote:
>Hi all,
>
>I am using QProcess to launch an external application. The main part 
>work without trouble, but I need to check for license errors and if one 
>occurred, I need would like to restart the existing process with all 
>it's environment settings and signal connections a certain number of times.
>
>I connect QProcess.readyReadStandardError to a slot that toggles an 
>attribute called self.in_error to True.
>I also connect QProcess.stateChanged to another slot which looks like this:
>
>     def __retry_process(self, process_state):
>         max_retries = 5
>         if (process_state == QtCore.QProcess.NotRunning) and self.in_error:
>             # process has finished in an error state, so try to run it 
>again
>             self.current_try += 1
>             print 'retrying {}/{}'.format(self.current_try, max_retries)
>             self.process.start(self.process.program(), 
>self.process.arguments())
>
>This prints the line "retrying 1/5" but after that nothing happens. I 
>can't see any log output from self.process so if seems to simply not be 
>running the second time around.
>I thought this would recursively call self.process 5 times after failing 
>the first time, since self.process.stateChanged is still connected to 
>self__retry_process(), and the current_try attribute is on class level 
>where it gets incremented on every unsuccessful try.
>
>I am obviously wrong about that. Could someboy help me out please?
>
>Cheers,
>frank
>_______________________________________________
>PySide mailing list
>PySide@qt-project.org
>https://lists.qt-project.org/listinfo/pyside
</pre></div><br><br><span title="neteasefooter"><p> </p></span>