我试图在python脚本中模拟HTTP服务器,但是失败了。 我正在做的是:
import bottle
from restclient import GET
from threading import Thread
@bottle.route("/go")
def index():
return "ok"
server = Thread(target = bottle.run)
server.setDaemon(True)
server.start()
print "Server started..."
response = GET("http://127.0.0.1:8080/go")
assert response.body == "ok"
print "Done..."
基本上我正在尝试发射瓶子.py在单独的线程中具有1个测试路由的http服务器,然后从中模拟响应。在
但它就是不起作用。服务器不是在一个单独的线程中启动的,所以当我试图请求它时,总是得到“errno 111 connection declined”。在
问题是如何解决的?有没有其他方法可以模拟http服务器?在
您没有留出足够的时间来启动Web服务器。在
当您这样做时:
你刚启动服务器就试图访问它
根据哪个线程(主线程或服务器线程)首先运行(以及运行多长时间),当您试图访问它时,可能会出现服务器尚未启动的情况,因此出现
Connection Refused
错误。在您可以尝试执行以下操作:
^{pr2}$正如您在time.sleep sleeps thread or process?中看到的,执行
time.sleep
操作只会使当前正在运行的线程休眠,因此您可以给服务器线程留出足够的时间来启动。在现在,所有这些都有点老套了,所以您可能需要检查一下服务器的启动过程,看看是否有一种方法可以评估服务器是否已经启动并正在运行,并在启动之前等待这种情况。在
现在看一下瓶子源代码,我无法找到一个干净的解决方案;您可以一直尝试重复地攻击服务器,直到服务器最终响应为止,从而表明服务器是活动的。在
相关问题 更多 >
编程相关推荐