V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ChanneW
V2EX  ›  问与答

(Python 出了名的轮子多) 我想要执行远程传递过来的函数,并返回结果.有这个轮子么?

  •  
  •   ChanneW · 2014-05-27 17:46:44 +08:00 · 3954 次点击
    这是一个创建于 3862 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我输入一段 python 程序,作为字符串参数传递进来.想要得到执行结果.

    从开进程到执行结果的返回,异常的捕获. 有已经写好的么?

    类似各种 OJ 系统,我觉应该有这种轮子吧.
    23 条回复    2014-05-28 15:50:39 +08:00
    ffffwh
        1
    ffffwh  
       2014-05-27 17:51:42 +08:00
    好像eval()再怎么弄弄就行了...
    wangfeng3769
        2
    wangfeng3769  
       2014-05-27 17:52:55 +08:00
    exac
    ehs2013
        3
    ehs2013  
       2014-05-27 17:55:09 +08:00
    exec(py_script_string)
    execfile(filename)
    __import__('module_name')
    ChanneW
        5
    ChanneW  
    OP
       2014-05-27 18:05:39 +08:00
    @ffffwh
    @wangfeng3769
    @ehs2013

    直接这样搞,异常了就麻烦了.
    ChanneW
        6
    ChanneW  
    OP
       2014-05-27 18:11:38 +08:00
    @clino 这个轮子似乎大了点, 远程接管 stdio ?
    clino
        7
    clino  
       2014-05-27 18:22:47 +08:00
    @ChanneW 不是接管stdio,就是"执行远程传递过来的函数,并返回结果" RPyC = Remote Python Call
    xdata
        8
    xdata  
       2014-05-27 18:51:09 +08:00
    ipython 也是可以的.
    alexapollo
        9
    alexapollo  
       2014-05-27 19:03:06 +08:00
    有意思,这个问题问的好,保持关注。

    当前我想,eval加上一些异常处理也可以搞定。
    kqz901002
        10
    kqz901002  
       2014-05-27 19:04:44 +08:00
    我做自动化测试的时候用pyamf
    wangfeng3769
        11
    wangfeng3769  
       2014-05-27 19:05:13 +08:00
    bpython呢?
    ChanneW
        12
    ChanneW  
    OP
       2014-05-27 19:59:39 +08:00
    @xdata
    @wangfeng3769

    这两个都是 Shell ,他可能实现了我要的功能,但是我要怎么才能找到我想要的那一段啊
    ChanneW
        13
    ChanneW  
    OP
       2014-05-27 20:02:19 +08:00
    @clino 我再看下这个,后面的人越说越大了
    ChanneW
        14
    ChanneW  
    OP
       2014-05-27 20:16:13 +08:00
    @clino 又看了一下 , 这个是跑在客户端的 ,我想要的是跑在服务端的.
    zoowii
        15
    zoowii  
       2014-05-27 20:54:02 +08:00
    XML-RPC?
    zjxubinbin
        16
    zjxubinbin  
       2014-05-27 21:07:00 +08:00
    我表示也要保持关注
    clino
        17
    clino  
       2014-05-27 21:22:50 +08:00
    @ChanneW rpyc 有客户端也有服务端吧
    上面提到的xmlrpc 也不错,我们也用过
    /t/112835 这个贴也可以参考下
    ChanneW
        18
    ChanneW  
    OP
       2014-05-27 21:49:56 +08:00
    ChanneW
        19
    ChanneW  
    OP
       2014-05-27 22:02:18 +08:00
    @ChanneW
    增加一个捕获所有异常就能用了
    cbsw
        20
    cbsw  
       2014-05-27 23:27:38 +08:00
    可以看看 ipython notebook 是怎么实现的,我只知道底层是用 tornado ,但具体怎么封装网页输入的 python 代码并传给服务器端执行的没有研究过
    Ever
        21
    Ever  
       2014-05-28 09:00:16 +08:00
    远程执行本地代码可以用pp.

    想远程执行类似python命令行那种可以用gevent的backdoor.
    ChanneW
        22
    ChanneW  
    OP
       2014-05-28 15:09:10 +08:00
    总结一下:

    - 从前端发到后端的过程我是想用网页的,这部分差别较大,自定义度太高所以还是自己做.
    - 后端需要的功能其实就是:
    限定内存,限定时间,安全的执行一段 Python 脚本,并把结果返回.

    有这样的东东么?
    ChanneW
        23
    ChanneW  
    OP
       2014-05-28 15:50:39 +08:00
    这个有点意思,意外所得
    https://github.com/ajalt/fuckitpy
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2761 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:48 · PVG 22:48 · LAX 06:48 · JFK 09:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.