Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python远程程序执行无阻塞_Python_Ssh_Paramiko - Fatal编程技术网

Python远程程序执行无阻塞

Python远程程序执行无阻塞,python,ssh,paramiko,Python,Ssh,Paramiko,我有一个web应用程序,用户可以在其中发出在不同机器上执行程序的请求。web应用程序是用Python编写的。远程程序是C语言,但在这方面语言不重要 因此,我认为SSH是一条出路(这在这里已经得到了回答)。但在我的用例中,远程程序可以运行数天,显然我不希望ssh调用阻止我的web应用程序 所以我可以将远程程序作为后台进程运行。但我也有兴趣知道程序何时完成以及退出代码 那么有什么方法可以实现这一点呢?似乎需要通过ssh启动一个守护进程。如果您不想在远程主机上启动系统服务(您可能不想),那么scree

我有一个web应用程序,用户可以在其中发出在不同机器上执行程序的请求。web应用程序是用Python编写的。远程程序是C语言,但在这方面语言不重要

因此,我认为SSH是一条出路(这在这里已经得到了回答)。但在我的用例中,远程程序可以运行数天,显然我不希望ssh调用阻止我的web应用程序

所以我可以将远程程序作为后台进程运行。但我也有兴趣知道程序何时完成以及退出代码


那么有什么方法可以实现这一点呢?

似乎需要通过ssh启动一个守护进程。如果您不想在远程主机上启动系统服务(您可能不想),那么screen/dtach/tmux是一个不错的选择。看看screen,它是一个很好的linux实用程序,用于分离会话,然后通过ssh启动它。谢谢,screen看起来很有希望。至少在我问题的第一部分。但是连接到stdout/stderr怎么样?就我对screen的理解而言,如果远程程序完成或崩溃,除了启动新的ssh会话、连接到screen进程并重新连接窗口之外,没有其他方法可以得到通知。只有两种方法可以在远程程序终止时得到通知:(a)保持检查/轮询/保持打开的ssh连接或(b)让远程主机通知您,但这需要您的主机公开某个端点,这非常接近成熟的异步微服务。我建议用一些小脚本包装远程程序,将stdout/stderr/retcode保存到一些文件中,然后定期检查它们是否存在。