【问题标题】:Urllib2 runs fine if i run the program independently but throws error when i add it to a cronjob如果我独立运行程序,Urllib2 运行良好,但是当我将其添加到 cronjob 时会抛出错误
【发布时间】:2013-01-27 10:46:57
【问题描述】:
url = "www.someurl.com" request = urllib2.Request(url,header={"User-agent" : "Mozilla/5.0"}) contentString = urllib2.url(request).read() contentFile = StringIO.StringIO(contentString) 对于范围内的 i (0,2): html = contentFile.readline() 打印html

上述代码在命令行中运行良好,但如果我将其添加到 cron 作业中,则会引发以下错误:

 文件“/usr/lib64/python2.6/urllib2.py”,第 409 行,在 _open
    '_open',请求)
  _call_chain 中的文件“/usr/lib64/python2.6/urllib2.py”,第 369 行
    结果 = 函数(*args)
  http_open 中的文件“/usr/lib64/python2.6/urllib2.py”,第 1186 行
    返回 self.do_open(httplib.HTTPConnection, req)
  文件“/usr/lib64/python2.6/urllib2.py”,第 1161 行,在 do_open
    引发 URLError(err)
urllib2.URL错误:

我确实在其他论坛上看过一些技巧并尝试过,但它没有用。

任何帮助将不胜感激。

【问题讨论】:

  • 我会检查以下内容: 1. 确保在两种情况下都使用相同的 python 版本和 python 路径。在程序顶部插入print sys.version; print sys.path 并比较 2. 比较环境变量(print os.environ)。检查是否存在 HTTP_PROXY 环境变量。
  • 版本相同,并且存在 HTTP_PROXY。是这个问题吗?
  • 我敢打赌这是您的代理设置的问题。 URLError:
  • 但令人困惑的是在同一台机器上 python 脚本如何从命令行运行?即使这样,代理也应该引起问题吗?还是仅在我创建 cron 作业后才使用操作系统设置?
  • 再次检查 HTTP_PROXY 环境变量是否被 cronjob 任务看到。从程序中执行print os.environ 并确保重定向输​​出,以便您可以检查该值。

标签: python urllib2 python-2.6


【解决方案1】:

crontab 和命令行使用的环境变量不同。

我通过添加 */15 * * * * 解决了这个问题。 $HOME/.profile; /路径/到/命令。

这使得 crontab 可以获取为系统指定的环境变量。

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 2012-11-05
    • 2016-06-03
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多