run-dev: Avoid deprecated tornado.gen.engine.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2022-03-17 14:24:48 -07:00
committed by Alex Vandiver
parent d891b9590a
commit 1c7954b452

View File

@@ -5,7 +5,7 @@ import pwd
import signal import signal
import subprocess import subprocess
import sys import sys
from typing import Any, Callable, Generator, List, Sequence from typing import Any, List, Sequence
from urllib.parse import urlunparse from urllib.parse import urlunparse
TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -16,7 +16,7 @@ from tools.lib import sanity_check
sanity_check.check_venv(__file__) sanity_check.check_venv(__file__)
from tornado import gen, httpclient, httputil, web from tornado import httpclient, httputil, web
from tornado.ioloop import IOLoop from tornado.ioloop import IOLoop
from tools.lib.test_script import add_provision_check_override_param, assert_provisioning_status_ok from tools.lib.test_script import add_provision_check_override_param, assert_provisioning_status_ok
@@ -193,22 +193,7 @@ def transform_url(protocol: str, path: str, query: str, target_port: int, target
return newpath return newpath
@gen.engine client = httpclient.AsyncHTTPClient()
def fetch_request(
url: str, callback: Any, **kwargs: Any
) -> "Generator[Callable[..., Any], Any, None]":
# use large timeouts to handle polling requests
req = httpclient.HTTPRequest(
url,
connect_timeout=240.0,
request_timeout=240.0,
decompress_response=False,
**kwargs,
)
client = httpclient.AsyncHTTPClient()
# wait for response
response = yield gen.Task(client.fetch, req)
callback(response)
class BaseHandler(web.RequestHandler): class BaseHandler(web.RequestHandler):
@@ -264,8 +249,7 @@ class BaseHandler(web.RequestHandler):
self.write(response.body) self.write(response.body)
self.finish() self.finish()
@web.asynchronous async def prepare(self) -> None:
def prepare(self) -> None:
if "X-REAL-IP" not in self.request.headers: if "X-REAL-IP" not in self.request.headers:
self.request.headers["X-REAL-IP"] = self.request.remote_ip self.request.headers["X-REAL-IP"] = self.request.remote_ip
if "X-FORWARDED_PORT" not in self.request.headers: if "X-FORWARDED_PORT" not in self.request.headers:
@@ -278,15 +262,21 @@ class BaseHandler(web.RequestHandler):
self.target_host, self.target_host,
) )
try: try:
fetch_request( request = httpclient.HTTPRequest(
url=url, url=url,
callback=self.handle_response,
method=self.request.method, method=self.request.method,
headers=self._add_request_headers(["upgrade-insecure-requests"]), headers=self._add_request_headers(["upgrade-insecure-requests"]),
follow_redirects=False, follow_redirects=False,
body=getattr(self.request, "body"), body=getattr(self.request, "body"),
allow_nonstandard_methods=True, allow_nonstandard_methods=True,
# use large timeouts to handle polling requests
connect_timeout=240.0,
request_timeout=240.0,
# https://github.com/tornadoweb/tornado/issues/2743
decompress_response=False,
) )
response = await client.fetch(request, raise_error=False)
self.handle_response(response)
except httpclient.HTTPError as e: except httpclient.HTTPError as e:
if hasattr(e, "response") and e.response: if hasattr(e, "response") and e.response:
self.handle_response(e.response) self.handle_response(e.response)