如何从Rails应用程序运行Python脚本?

How to Run a Python Script from a Rails Application?

我现在正在开发一个Rails应用程序,只要在我们的应用程序主页上单击一个按钮,就需要运行一个单独的python脚本。我正在设法让Rails运行这个脚本,到目前为止,我的两次尝试都失败了。

我的第一次尝试是使用exec(..)命令来运行"python script.py",但是当我这样做时,它似乎运行了文件,但是终止了rails服务器,因此每次都需要手动重新启动它。

我的第二次尝试是安装gem"rubypython",并尝试从那里开始,但一旦我运行了它,我就不知该做什么。我找不到任何人使用它来运行或加载Python脚本的例子。

如有任何帮助,我们将不胜感激。


exec用新流程取代了当前流程。您希望将其作为子进程运行。请参阅何时在Ruby中使用每种启动子进程的方法,以获得概述;我建议在需要更多控制时,对一个简单的进程使用backticks,或者在需要更多控制时使用popen/popen3

或者,您可以使用Ruby python bridge gem rubypython从Ruby本身执行python(特别是如果您将重复执行相同的python函数)。要做到这一点,您需要将脚本制作成适当的python模块,在Rails应用程序启动时启动桥接,然后使用RubyPython.import将对模块的引用获取到Ruby代码中。gem的github页面上的示例非常简单,应该足以满足您的需要。


以下是执行shell脚本的方法

1
`python pythonscript.py`

1
system("python pythonscript.py" )

1
exec(" python pythonscript.py")

exec通过运行给定的外部命令来替换当前进程。返回none,当前进程将被替换,并且永不继续。