【问题标题】:Tornado run test with nginx proxyTornado 使用 nginx 代理运行测试
【发布时间】:2015-12-28 17:46:26
【问题描述】:

我使用 Tornado 并编写了一些测试。一切都很好。

那我就用nginx做代理了:

server {
    listen 80;
    server_name mine.local;
    location / {

      proxy_pass http://localhost:8000;
    }
}

效果很好。但是。

在测试中我使用AsyncHTTPTestCaseget_app 方法,它返回Application

问题是:在默认 127.0.0.1:8000 上测试“看起来” - Tornado 从端口 8000 开始,所有 self.app.reverse_url('name') 返回 127.0.0.1:8000/path。

但我需要,来自测试的所有请求都转到 nginx(代理):

mine.local/path

主机我有:

mine.local      127.0.0.1

在 nginx 中,我使用了一些 lua 脚本,它们完成了所有肮脏的工作。所以我需要,测试在 mine.local 上发出请求,而不是在默认的 127.0.0.1:8000 上发出请求。

如何做到这一点?

谢谢!

【问题讨论】:

    标签: nginx proxy lua tornado


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2013-06-21
      • 2019-06-04
      相关资源
      最近更新 更多