MCPcopy
hub / github.com/tornadoweb/tornado / fetch_impl

Method fetch_impl

tornado/simple_httpclient.py:162–187  ·  view source on GitHub ↗
(
        self, request: HTTPRequest, callback: Callable[[HTTPResponse], None]
    )

Source from the content-addressed store, hash-verified

160 self.tcp_client.close()
161
162 def fetch_impl(
163 self, request: HTTPRequest, callback: Callable[[HTTPResponse], None]
164 ) -> None:
165 key = object()
166 self.queue.append((key, request, callback))
167 assert request.connect_timeout is not None
168 assert request.request_timeout is not None
169 timeout_handle = None
170 if len(self.active) >= self.max_clients:
171 timeout = (
172 min(request.connect_timeout, request.request_timeout)
173 or request.connect_timeout
174 or request.request_timeout
175 ) # min but skip zero
176 if timeout:
177 timeout_handle = self.io_loop.add_timeout(
178 self.io_loop.time() + timeout,
179 functools.partial(self._on_timeout, key, "in request queue"),
180 )
181 self.waiting[key] = (request, callback, timeout_handle)
182 self._process_queue()
183 if self.queue:
184 gen_log.debug(
185 "max_clients limit reached, request queued. "
186 "%d active, %d queued requests." % (len(self.active), len(self.queue))
187 )
188
189 def _process_queue(self) -> None:
190 while self.queue and len(self.active) < self.max_clients:

Callers

nothing calls this directly

Calls 4

_process_queueMethod · 0.95
appendMethod · 0.80
add_timeoutMethod · 0.80
timeMethod · 0.80

Tested by

no test coverage detected