urllib2.urlopen 手工调用没问题,通过crontab调用报错 [Errno 110] Connection timed out

背景:创建脚本监控进程并使用企业微信通知。手工运行正常,但通过crontab调度时报[Errno 110] Connection timed out错误。解决方法:确定crontab下网络代理未生效,通过设置环境变量或导入os模块设定代理来解决问题。
摘要由CSDN通过智能技术生成

背景:

准备实现一个脚本,用来监控进程是否还存在,如果不存在,通过调用企业微信机器人回调地址来通知群内的人员

问题现场:

手工调用,python notify.py   可以正确通知。但是将脚本加入crontab,每分钟执行一次时,脚本有执行,但是无法通知群内用户。

通过日志定位,报错信息为“<urlopen error [Errno 110] Connection timed out>”

问题解决方法:

通过定位,怀疑是crontab方式网络代理没有生效,通过显示设置代理解决:

如果手动可以成功,crontab方式不行,说明机器上是存在代理的。可以通过env|grep proxy来找到

方式1:

通过import os,设置代理

    try:
        os.environ['https_proxy'] = 'https://xxx.com:8080'
        os.environ['http_proxy'] = 'http://xxx.com:8080'


        req = urllib2.Request(uri)
        req.add_header('Content-Type', 'application/json')
        r = urllib2.urlopen(req, json.dumps(data))
        return r
    except Exception as e:
        print e

方式2&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值