Hi,

I want to achieve the following:

* My (Windows) application is trying to make a connection with a Linux server, using another application (plink, part of the Putty distro) * Since an external application is to be called, I'm using the method subprocess in this way: retcode = subprocess.call( "plink -batch %...@%s echo" % (self.beqLineEdit.text(), self.linuxmachineComboBox.currentText())
                                    , shell=True
                                    , stderr=errptr
                                    )
* However, that call can take up to 10 seconds (worst case). In the mean time, my main application is "frozen", I can't do anything else.

Now, what I would like to do, is to decouple the above call from the main thread, such that the main application becomes "free" again. I also would like to start a one shot timer (using QTimer.singleShot()) to create a time-out. This is to prevent a "hang" of the application, in case something goes wrong during the subprocess call.

So, my intention is to check when the one shot timer elapses, if the subprocess call is still busy. If not, then all is fine and I simply ignore the time out. If the subprocess is still busy, I would like to be able to (if needed, forcefully) stop the subprocess call.

I currently started the one shot timer just before I launched the subprocess call, but I see that the one shot timer is also blocked by the subprocess call. So, that doesn't do what I in fact want to do.

My questions:

1. How can I "decouple" the subprocess call?
2. How can I forcefully stop a subprocess call (that should be the case if my one shot timer elapses after 10 seconds, and the subprocess call is not returned yet)? 3. What's the best approach to achieve the above requirements? Using a kind of a state machine, where I first start the subprocess call (decoupled), then start the one shot timer, change the state and then check in that state if the subprocess call has indeed ended? And if not, forcefully stop the subprocess call?

Any practical helpful tips much appreciated!


--
Best rgds,

Geert
________________________________________________

*Use EcoCho <http://www.ecocho.com>: environmentally friendly search the internet!*
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to