V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
arbipher
V2EX  ›  Python

有没有什么办法,能把服务器上 supervisor 启的 python 进程的 print,重定向到本地

  •  
  •   arbipher · 2014-03-17 00:06:02 +08:00 · 6746 次点击
    这是一个创建于 3929 天前的主题,其中的信息可能已经有所发展或是发生改变。
    否则debug好麻烦。我在测试新浪微博的API,没法本地测。

    服务器端supervisor啊nginx啊都(bie)写(ren)好(xie)了(de),我不(lan)想(de)改了。

    “重定向到本地”的意思是"任何比我看log更简单的办法"

    我是linux小白,菊苣们有什么好办法,指导一下。
    20 条回复    1970-01-01 08:00:00 +08:00
    loveshouhu
        1
    loveshouhu  
       2014-03-17 00:22:54 +08:00   ❤️ 1
    [program:XXX]
    directory = /path/to/XXX
    command = ....
    autostart=true
    redirect_stderr = true
    user = xxx
    stdout_logfile = /path/to/logs/log.log
    strak47
        2
    strak47  
       2014-03-17 00:30:12 +08:00   ❤️ 1
    ssh 运行时不就看到了吗?
    或者可以试试 fabric
    mengzhuo
        3
    mengzhuo  
       2014-03-17 00:31:56 +08:00   ❤️ 1
    同意楼上,
    不过不管是不是别人写的,最好查找替换一下print成log,这样以后还可以直接通过rsyslog传回公司内部的logserver

    p.s. 别人写的竟然没有通过testcase就交货啦?
    tcsky
        4
    tcsky  
       2014-03-17 00:32:03 +08:00   ❤️ 1
    你直接ssh连服务器上去 tail -f 看日志吧~
    mengzhuo
        5
    mengzhuo  
       2014-03-17 00:32:40 +08:00
    我X……这速度,我是同意一楼
    beakey
        6
    beakey  
       2014-03-17 00:34:53 +08:00 via iPhone   ❤️ 1
    可以开启网页,在网页上看日志
    jerry
        7
    jerry  
       2014-03-17 00:44:06 +08:00   ❤️ 1
    为什么不能本地调试?如果是因为回调页地址可以用 /etc/hosts
    arbipher
        8
    arbipher  
    OP
       2014-03-17 01:05:58 +08:00
    @loveshouhu
    我没有看懂你的回复。。。
    supervisor在服务器端,
    > stdout_logfile = /path/to/logs/log.log
    这是个服务器端的路径?
    那我要看这个log,还是ssh过去,然后tail?
    我就是觉得这样子麻烦。想问问偷懒的法子啊


    @strak47
    > ssh 运行时不就看到了吗?
    是什么意思?
    > 或者可以试试 fabric
    这个我用了,是对的。用fabric直接启Python web.py,这个print我在本地是能看到的。
    关键服务器端是supervisor启的web.py,而且nginx已经占了80端口。我不想改ngxin的设备,80端口没法用。


    @tcsky
    这就是我提问的地方。我觉得这样麻烦了,Fabric那种是把服务器端Python进程的print实时输出到我本地的。但是现在用不了Fabric。也不是说用不了,我想知道有没有更简单的办法,在尽量少修改原来模块的情况下,使我debug容易一些。

    @mengzhuo
    > 最好查找替换一下print成log
    现在还是开(xue)发(xi)中,我不是很熟悉新浪的API,还想做做实验,感觉print比log用起来快捷。
    > rsyslog传回公司内部的logserver
    两人小作坊啦,名词记住了。等开发差不多了我来学习一下。。。


    @jerry
    因为新浪要求的redirec_url是个域名。。。
    jerry
        9
    jerry  
       2014-03-17 01:27:25 +08:00
    @arbipher 在 /etc/hosts 里将redirec_url那个域名解析到本机调试,调试完了再删除那条解析就OK了
    jerry
        10
    jerry  
       2014-03-17 01:30:02 +08:00
    @arbipher 如果是 Windows 应该就修改 C:\Windows\System32\drivers\etc\Hosts 文件
    beakey
        11
    beakey  
       2014-03-17 01:46:45 +08:00 via iPhone
    新浪可以在本地调试…
    ipconfiger
        12
    ipconfiger  
       2014-03-17 01:52:33 +08:00   ❤️ 1
    senatra 重定向到web,然后,刷web
    mengzhuo
        13
    mengzhuo  
       2014-03-17 06:03:58 +08:00
    @arbipher 当年给客户调试淘宝接口的时候,我也是这么想的,结果在客户机子上写了30多句print,反复调试了一天……也没能调试出来(@。@)

    最后发发狠,学ipdb+log模块也只花了半小时
    Mutoo
        15
    Mutoo  
       2014-03-17 09:29:40 +08:00   ❤️ 1
    nc (netcat, network version cat) 不就是用来做这件事的么
    arbipher
        16
    arbipher  
    OP
       2014-03-17 13:04:36 +08:00
    @beakey 我理解错了?在这里提交“http://open.weibo.com/webmaster/add”
    OAuth的流程是:
    1 用户上我的网站
    2 用户点击微博登陆
    3 弹出微博登陆窗口
    4 登陆成功,微博回调我提供的网站URI。

    4中的URI在本地的话,微博怎么回调的过来……我没能理解。
    arbipher
        17
    arbipher  
    OP
       2014-03-17 13:08:17 +08:00
    @ipconfiger 你说的是sinatra?那我懂了,我tornado是一样的。。。不过这里面有一个问题。。。supervisor的log有个长得很像hash值的后缀名,每次run都不一样。。。


    @mengzhuo 发发狠,哈哈,我来看下ipdb和log


    @treo
    @Mutoo
    这个看起来像!我来学习一发。

    楼上感谢已发送(人肉去重复)
    guoqiao
        18
    guoqiao  
       2014-03-17 16:08:03 +08:00   ❤️ 1
    不想ssh的话, 可以开启supervisor的web, 直接在浏览器里看日志.
    arbipher
        19
    arbipher  
    OP
       2014-03-18 02:05:16 +08:00
    @guoqiao
    @ipconfiger
    @beakey
    试了下supervisor自带了网页调试,开启方法是在config里面加入[inet_http_server]段
    有个坑是ubuntu下,supervisor重新加载config是
    supervisorctrl reload
    而不是
    service supervisor restart

    之后可以在web上操作supervisor了。


    @mengzhuo
    看了文档,也试用了一下。
    然后我发现不用装ipdb,用自带的pdb就可以了。
    log,和其他语言的大同小异。


    @treo
    @Mutoo
    @tcsky
    学习了一发nc。在服务器端重定向stdout到TCP链接,客户端接收。

    另外,我太菜了!我今天才知道 tail -f 是“实时的”。。。
    然后我发现本地 ssh server_name tail /path/to/log.log就可以了。


    小白又怒学了好多“姿势”,感谢楼上朱军。
    arbipher
        20
    arbipher  
    OP
       2014-03-19 02:03:17 +08:00
    自己re一个,犯了几个巨大的错误。。。
    supervisor config里面的stdout_redirect也是不包括print的,想要用tail -f看到事实的输出,还是得老老实实的用log
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4079 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 05:26 · PVG 13:26 · LAX 21:26 · JFK 00:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.