Tornado 运行 使用 nginx 代理测试
Tornado run test with nginx proxy
我使用 Tornado 并编写了一些测试。而且一切都很好。
那我就用nginx做代理了:
server {
listen 80;
server_name mine.local;
location / {
proxy_pass http://localhost:8000;
}
}
效果很好。但是.
在测试中我使用 AsyncHTTPTestCase
和 get_app
方法,其中 returns Application.
问题是:在默认 127.0.0.1:8000 上测试 "looks" - Tornado 在端口 8000 上启动,所有 self.app.reverse_url('name')
returns 127.0.0.1:8000/路径.
但我需要,来自测试的所有请求都转到 nginx(代理):
我的local/path
在 hosts 我有:
mine.local 127.0.0.1
在 nginx 中,我使用了一些 lua-脚本,它们可以完成所有脏活。所以我需要,测试在 mine.local 上发出请求,而不是在默认 127.0.0.1:8000.
上发出请求
如何操作?
谢谢!
def bind_unused_port():
"""Binds a server socket to an available port on localhost.
Returns a tuple (socket, port).
"""
[sock] = netutil.bind_sockets(8000, 'localhost', family=socket.AF_INET)
port = sock.getsockname()[1]
return sock, port
class MineTestCase(AsyncHTTPTestCase):
def setUp(self):
super(AsyncHTTPTestCase, self).setUp()
sock, port = bind_unused_port()
self.__port = port
self.http_client = self.get_http_client()
self._app = self.get_app()
self.http_server = self.get_http_server()
self.http_server.add_sockets([sock])
def get_url(self, path):
url = '%s://%s:%s%s' % (self.get_protocol(), 'mine.local',
80, path)
return url
我使用 Tornado 并编写了一些测试。而且一切都很好。
那我就用nginx做代理了:
server {
listen 80;
server_name mine.local;
location / {
proxy_pass http://localhost:8000;
}
}
效果很好。但是.
在测试中我使用 AsyncHTTPTestCase
和 get_app
方法,其中 returns Application.
问题是:在默认 127.0.0.1:8000 上测试 "looks" - Tornado 在端口 8000 上启动,所有 self.app.reverse_url('name')
returns 127.0.0.1:8000/路径.
但我需要,来自测试的所有请求都转到 nginx(代理):
我的local/path
在 hosts 我有:
mine.local 127.0.0.1
在 nginx 中,我使用了一些 lua-脚本,它们可以完成所有脏活。所以我需要,测试在 mine.local 上发出请求,而不是在默认 127.0.0.1:8000.
上发出请求如何操作?
谢谢!
def bind_unused_port():
"""Binds a server socket to an available port on localhost.
Returns a tuple (socket, port).
"""
[sock] = netutil.bind_sockets(8000, 'localhost', family=socket.AF_INET)
port = sock.getsockname()[1]
return sock, port
class MineTestCase(AsyncHTTPTestCase):
def setUp(self):
super(AsyncHTTPTestCase, self).setUp()
sock, port = bind_unused_port()
self.__port = port
self.http_client = self.get_http_client()
self._app = self.get_app()
self.http_server = self.get_http_server()
self.http_server.add_sockets([sock])
def get_url(self, path):
url = '%s://%s:%s%s' % (self.get_protocol(), 'mine.local',
80, path)
return url