对于我的项目,我必须检查网站的状态(在共享主机上)。
我使用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中添加额外的超时异常,例如:函数调用超时
谢谢
我正在尝试创建一个在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)
但是,当我运行此代码,无论是cflags,ldflags还是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)