背景:
准备实现一个脚本,用来监控进程是否还存在,如果不存在,通过调用企业微信机器人回调地址来通知群内的人员
问题现场:
手工调用,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&

背景:创建脚本监控进程并使用企业微信通知。手工运行正常,但通过crontab调度时报[Errno 110] Connection timed out错误。解决方法:确定crontab下网络代理未生效,通过设置环境变量或导入os模块设定代理来解决问题。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



