如何在Rails服务器上运行Python脚本?
我有一个Rails服务器,需要在后台运行一个Python脚本。我知道可以像在Ruby中运行终端命令那样来运行它,但这样性能怎么样呢?用Python框架会不会比用Rails更好?有没有更好的方法(从优化的角度)在Rails服务器上运行Python脚本呢?
3 个回答
1
每次你从Ruby运行Python的时候,都需要付出启动Python的代价。这种代价在使用Python框架时也是一样的,除非你能把Python脚本当作一个库来使用。
1
你可以在Rails中设置一个守护进程来执行Python脚本。
http://railscasts.com/episodes/129-custom-daemon - 这是一个关于在Rails中设置守护进程的教程。
5
如果你的意思是这个程序需要定期运行,那就把它设置成一个定时任务(cron job)就行了,这样就不用担心性能问题了。
如果你的意思是这个程序需要在用户访问你的网站时运行,那么每次都运行这个脚本就不太合适,因为这样会不断启动Python解释器,效率会很低。
如果这个Python脚本比较大,但只是在少数页面请求中被调用,那有时候这样做也可以,毕竟不常用的慢操作,花时间去优化可能不划算。
如果你的网站大部分功能都是围绕这个Python脚本展开的,那你可能更适合换成一个Python的网络框架,把它作为一个模块来加载。
如果这个Python脚本不大,那你可能更好地考虑把它用Ruby重写。
最糟糕的情况是这个脚本既大又经常被用,但它在你的网站中占比不够,没必要完全换成Python。在这种情况下,我建议可以把Python脚本放在一个后台进程里,让Ruby通过它进行沟通。