小编Kan*_*ium的帖子

DNS超时在“请求” python库上

对于我的项目,我必须检查网站的状态(在共享主机上)。

我使用Python请求库。

def getStatusCode(url):
    try:
        return requests.head(url,timeout=0.3).status_code
    except:
        return -1
Run Code Online (Sandbox Code Playgroud)

此代码在MacOS 10.10和Python3.4(带有类似http://www.google.com的网址)下的效果很好。如果拔下ISP电缆,则会立即出现异常。

在具有Python3.4的Ubuntu Server 14.04下,如果拔下ISP电缆,则永远不会收到超时错误。Raspbian上的同样问题。

经过一些测试,如果我用IP http://216.58.212.100替换了URL ,Ubuntu Server会给我一个例外,但是由于我位于共享的Web托管上,所以我不能使用IP。

经过一番研究,我发现请求库中的超时与DNS查找之间没有区别,不是由它执行而是由操作系统执行。

所以我的问题是解决这个问题的最美丽的方法是什么?我是否需要在Python中添加额外的超时异常,例如:函数调用超时

谢谢

python dns python-requests

5
推荐指数
1
解决办法
2081
查看次数

根据当前操作系统更新makefile中的CFLAGS或LDFLAGS

我正在尝试创建一个在OSX和Linux上均可使用的makefile。

我的问题是我需要更改,cflags并且ldflags取决于操作系统,makefile已执行,但无法使其正常工作。那是我的makefile:

OS:=$(shell uname)
DST=hello
SRC=$(wildcard *.cpp)
OBJ=$(SRC:.cpp=.o)
CFLAGS=

all: clean DetectOS $(DST)

DetectOS:
ifeq ($(OS),Darwin)
    @echo OS : $(OS)
    CC=g++
    LDFLAGS="-lm -framework OpenCL"
    CFLAGS+=-O3
endif

ifeq ($(OS),Linux)
    #Coming soon...
endif

$(DST): $(OBJ)
    $(CC) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
    $(CC) -o $@ -c $< $(CFLAGS)

clean:
    rm -rf *.o $(DST)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码,无论是cflagsldflags还是CC在更新的ifeq条件块。我得到以下结果:

$ make
rm -rf *.o hello
OS : Darwin
CC=g++
LDFLAGS="-lm -framework OpenCL"
CFLAGS+=-O3
cc -o …
Run Code Online (Sandbox Code Playgroud)

c++ macos makefile

5
推荐指数
1
解决办法
1035
查看次数

标签 统计

c++ ×1

dns ×1

macos ×1

makefile ×1

python ×1

python-requests ×1