gpt4 book ai didi

Ubuntu 上的 Python SSLError,但仅当从 CRON 运行时

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:10 25 4
gpt4 key购买 nike

我有一个使用请求模块的 Python 脚本。它在我的桌面 (Windows) 上运行,并且在我的 VM (Ubuntu 14.04/python 2.7.14) 上手动运行它时运行。但是,当将完全相同的命令安排为同一 VM 上的 CRON 作业时,它会失败。

违规行似乎是:

index_response = requests.get(my_https_URL, verify=False)

(略微编辑的)响应是:

(<class 'requests.exceptions.SSLError'>, SSLError(MaxRetryError("HTTPSConnectionPool(host=my_https_URL, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '_ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure'),))",),), <traceback object at 0x7f3d877ce5f0>)

HTTP URL 似乎没有受到影响,实际上某些 HTTPS URL正在 工作...(我认为是需要 SNI 的域无法工作)。

我尝试添加 verify=False,甚至以 sudo 运行 CRON 脚本,但没有更新。最初我手动运行它时失败了,但后来我安装了 python2.7.14(除了 python 2.7.6),这解决了手动问题。为了进一步增加复杂性,该脚本由另一个使用 exec 的脚本触发(测试运行器运行各种测试脚本,包括这个脚本)——这可能相关吗?

我在 urllib2 中没有遇到这个问题,但如果可以的话,我宁愿不要从 requests 返回到 urllib2...

最佳答案

因为我现在可以更好地格式化这里作为答案:

如果 cron 可能只是在您的情况下选择了错误的解释器。一个简单的解决方案是提供它的完整路径,您可以通过以下方式找到它:

md@gw1:~$ type python2.7
python2.7 is /usr/bin/python2.7
md@gw1:~$

现在在你的 crontab 中使用:

0 12 * * * /usr/bin/python2.7 your_script.py

或者使用所谓的 shebang:

md@gw1:~$ cat your_script.py
#!/usr/bin/python2.7

print "hello"

md@gw1:~$ chmod +x your_script.py
md@gw1:~$ ./your_script.py
hello
md@gw1:~$

your_script.py 中的第一行和 chmod 使其可执行并将使用正确的解释器。

关于Ubuntu 上的 Python SSLError,但仅当从 CRON 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com