MCPcopy
hub / github.com/benoitc/gunicorn / _handle_connection_uwsgi

Method _handle_connection_uwsgi

gunicorn/asgi/protocol.py:845–890  ·  view source on GitHub ↗

Handle uWSGI protocol connections (legacy path).

(self, peername, sockname)

Source from the content-addressed store, hash-verified

843 self._close_transport()
844
845 async def _handle_connection_uwsgi(self, peername, sockname):
846 """Handle uWSGI protocol connections (legacy path)."""
847 unreader = AsyncUnreader(self.reader)
848
849 while not self._closed:
850 self.req_count += 1
851
852 try:
853 request = await AsyncUWSGIRequest.parse(
854 self.cfg,
855 unreader,
856 peername,
857 self.req_count
858 )
859 except NoMoreData:
860 break
861 except UWSGIParseException as e:
862 self.log.debug("uWSGI parse error: %s", e)
863 break
864
865 # Check for WebSocket upgrade
866 if self._is_websocket_upgrade(request):
867 await self._handle_websocket(request, sockname, peername)
868 break
869
870 # Handle HTTP request
871 keepalive = await self._handle_http_request(
872 request, sockname, peername
873 )
874
875 # Increment worker request count
876 self.worker.nr += 1
877
878 # Check max_requests
879 if self.worker.nr >= self.worker.max_requests:
880 self.log.info("Autorestarting worker after current request.")
881 self.worker.alive = False
882 keepalive = False
883
884 if not keepalive or not self.worker.alive:
885 break
886
887 if not self.cfg.keepalive:
888 break
889
890 await request.drain_body()
891
892 def _is_websocket_upgrade(self, request):
893 """Check if request is a WebSocket upgrade.

Callers 1

_handle_connectionMethod · 0.95

Calls 8

_is_websocket_upgradeMethod · 0.95
_handle_websocketMethod · 0.95
_handle_http_requestMethod · 0.95
AsyncUnreaderClass · 0.90
drain_bodyMethod · 0.80
parseMethod · 0.45
debugMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected