[Interest] how to restart QProcess after it fails?
Frank Rueter | OHUfx
frank at ohufx.com
Sat Jun 1 09:26:49 CEST 2019
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
More information about the Interest
mailing list