- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个奇怪的问题。为了有一个简短的最小工作示例 (MWE),我们假设 Connect()
返回一个 urllib3.connection.HTTPConnection
对象。我们还假设如果在错误消息中发现 'magicword'
(不是实际单词,但嘿,这是一个 MWE),我想忽略一些其他异常冒泡。
MWE:
try:
conn_obj = Connect()
except Exception as e: # there are some other exceptions I want to ignore
if 'magicword' not in e.message:
print 'fatal error: {}'.format(e.message)
这在我的机器上运行良好,并在遇到时打印“ fatal error ”并忽略其他异常(在这种情况下应该如此)。
但是,在同事的机器上,错误没有得到处理,而是崩溃并创建了回溯。这是我机器上的完全相同的错误,只是他不会打印和崩溃而不是被处理。我们都使用完全相同的操作系统 (Windows 7)。
显然不处理特定的异常并不理想,所以我尝试了这条路线:
from urllib3.exceptions import NewConnectionError
try:
conn_obj = Connect()
except NewConnectionError as nce:
print 'fatal error: {}'.format(e.message)
except Exception as e: # there are some other exceptions I want to ignore
if 'magicword' not in e.message:
print 'fatal error: {}'.format(e.message)
那也没用。由于某种原因,它不会在他的盒子上捕获异常。为什么异常可以在我的机器上处理,但不能在他的机器上处理?
更新:
连接对象在 pyelasticsearch 第三方库中产生。我一直都能很好地捕捉到它,但在其他机器上使用相同的代码并没有被捕捉到。这是我写的一个文件,用于测试在明确提出时是否捕获到错误:
from urllib3.exceptions import NewConnectionError
def error_test(test_num):
print '\n\n'
try:
if test_num == 1:
print 'TEST 1: See if NewConnectionError is caught specifically'
raise NewConnectionError('no pool', 'test one')
elif test_num == 2:
print 'TEST 2: See if RuntimeError is caught related to magicword'
raise RuntimeError('test two magicword catching test')
elif test_num == 3:
print 'TEST 3: See if RuntimeError is caught NOT related to magicword'
raise RuntimeError('test three')
except NewConnectionError as nce:
print 'Test 1 passed successfully.\n\n{}'.format(nce.message)
except Exception as e:
if 'magicword' not in e.message:
print 'Test 3 passed successfully.\n\n{}'.format(e.message)
else:
print 'Test 2 passed successfully.\n\n{}'.format(e.message)
error_test(1)
error_test(2)
error_test(3)
该测试在我们的两台机器上都运行良好。所以不知何故,通过让第三方库参与我们机器之间的某些东西是不一致的(这实际上是在 pyinstaller 编译的二进制文件中,所以库差异不应该发挥作用)。
最佳答案
也许您可以尝试 from elasticsearch.exceptions import ConnectionError
并用它替换您的 NewConnectionError
。来自 elasticsearch 的文档 here
关于python - urllib3.exceptions.NewConnectionError 错误在一台机器上处理但在另一台机器上不处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765360/
我正在使用 Python 和请求模块。但是每当我将“requests.get”与 URL 一起使用时,我都会收到错误消息: Traceback (most recent call last): Fil
我在 linux 服务器上运行 Python 3。我需要安装一些库(显然)所以我正在尝试: pip3 install numpy 其中,导致以下错误: Collecting numpy Retry
我是Docker的新手,我刚刚安装了它,并为django项目做了一些配置。 当我正在运行 docker build . 时,出现这些错误,这是怎么了? WARNING: Retrying (Retry
在尝试使用 gevent 并行化 IO 绑定(bind)工作时,我收到了大量以下错误消息: requests.exceptions.ConnectionError: HTTPConnectionPoo
我有一个奇怪的问题。为了有一个简短的最小工作示例 (MWE),我们假设 Connect() 返回一个 urllib3.connection.HTTPConnection 对象。我们还假设如果在错误消息
所以今天我使用了自己编写的脚本,但我发现有些问题。我使用多重处理运行了我的程序几个小时,然后遇到了不同的错误。 第一个是: 第二个是: 最后一张: Traceback (most recent cal
我想不通的奇怪问题。 我有一个使用 Python 的请求库并在 cronjob 上运行的脚本。当我在家通过 VPN 时,它工作正常。 如果我在办公室,cronjob 会返回连接错误,更具体地说是 Ne
我经常做pip install 在我的虚拟环境中的 Google Compute Engine (Debian) 上,但今天我只是收到了我尝试安装的任何包的新连接错误: Retrying (Retr
我正在尝试构建一个可以搜索汽车的简单django flex 搜索。但是,当我尝试重新建立索引时,它给了我上面的错误。我正在关注此文档-> quickstart elasticsearch ...下面给
我尝试在 django 项目中迭代 elasticsearch。但是当我执行命令python manage.py search_index --rebuild时 它犯了这个错误 elasticsear
我正在使用 python 使 2 个 API 在它们之间进行通信,我进行了测试,两个 API 都可以自己正常工作,当我尝试向 API A(用 Flask 制作)发送请求以便 A 可以通过时,问题就出现
我是一名优秀的程序员,十分优秀!