GCE停止监听http请求

2024-06-06 05:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在GCE服务器(一个简单的乒乓服务器)上运行了一个非常简单的瓶子应用程序:

import bottle

@bottle.route('/ping')
def ping():
    return 'pong'

SERVER_PORT = 5000

if __name__ == "__main__":
    bottle.run(host = '0.0.0.0', port = SERVER_PORT)

我可以像预期的那样发送ping和获取pong,但是如果我让它等待一段时间(时间量发生变化)然后再次发送ping,我看不到服务器收到请求的迹象,并且请求在没有应答的情况下超时。你知道吗

我的服务器运行的是带有Python3.6的Ubuntu,我使用screen在ssh连接中断时保持服务器的活动状态。你知道吗

以下是我迄今为止尝试的:

  • 真正的应用程序要复杂得多。我把它缩小到上面的例子,以确保它是真正的瓶子,而不是任何其他使服务器挂起。你知道吗
  • 我认为这可能与请求的数量有关(可能我没有释放一些资源,N个请求之后就没有资源来获取请求),但是服务器停止应答之前的请求数量是不同的
  • 我认为这可能是某种类型的超时问题,但最后一次应答的请求和挂起的请求之间的时间量会发生变化(有时它会在40分钟后应答,有时不会)

我做错什么了?你知道吗

编辑:请求似乎确实挂起在服务器上:当我发送ping并等待响应时,如果我在等待时关闭服务器应用程序,我会立即得到一个“找不到页面”页面。但出于某种原因,瓶子不承认这个请求。你知道吗


Tags: import服务器应用程序瓶子bottle数量serverport
1条回答
网友
1楼 · 发布于 2024-06-06 05:32:26

原来问题是由瓶子的默认HTTP开发服务器引起的。 将服务器更改为cherrypy解决了这个问题(并使我的应用程序响应更快)。你知道吗

import bottle

@bottle.route('/ping')
def ping():
    return 'pong'

SERVER_PORT = 5000

if __name__ == "__main__":
    bottle.run(host = '0.0.0.0', port = SERVER_PORT, server = 'cherrypy')

相关问题 更多 >