| 30 | CONFIG_KWARGS: dict[str, Any] = {"loop": "auto", "http": "auto"} |
| 31 | |
| 32 | def __init__(self, *args: Any, **kwargs: Any) -> None: |
| 33 | super().__init__(*args, **kwargs) |
| 34 | |
| 35 | logger = logging.getLogger("uvicorn.error") |
| 36 | logger.handlers = self.log.error_log.handlers |
| 37 | logger.setLevel(self.log.error_log.level) |
| 38 | logger.propagate = False |
| 39 | |
| 40 | logger = logging.getLogger("uvicorn.access") |
| 41 | logger.handlers = self.log.access_log.handlers |
| 42 | logger.setLevel(self.log.access_log.level) |
| 43 | logger.propagate = False |
| 44 | |
| 45 | config_kwargs: dict = { |
| 46 | "app": None, |
| 47 | "log_config": None, |
| 48 | "timeout_keep_alive": self.cfg.keepalive, |
| 49 | "timeout_notify": self.timeout, |
| 50 | "callback_notify": self.callback_notify, |
| 51 | "limit_max_requests": self.max_requests, |
| 52 | "forwarded_allow_ips": self.cfg.forwarded_allow_ips, |
| 53 | } |
| 54 | |
| 55 | if self.cfg.is_ssl: |
| 56 | ssl_kwargs = { |
| 57 | "ssl_keyfile": self.cfg.ssl_options.get("keyfile"), |
| 58 | "ssl_certfile": self.cfg.ssl_options.get("certfile"), |
| 59 | "ssl_keyfile_password": self.cfg.ssl_options.get("password"), |
| 60 | "ssl_version": self.cfg.ssl_options.get("ssl_version"), |
| 61 | "ssl_cert_reqs": self.cfg.ssl_options.get("cert_reqs"), |
| 62 | "ssl_ca_certs": self.cfg.ssl_options.get("ca_certs"), |
| 63 | "ssl_ciphers": self.cfg.ssl_options.get("ciphers"), |
| 64 | } |
| 65 | config_kwargs.update(ssl_kwargs) |
| 66 | |
| 67 | if self.cfg.settings["backlog"].value: |
| 68 | config_kwargs["backlog"] = self.cfg.settings["backlog"].value |
| 69 | |
| 70 | config_kwargs.update(self.CONFIG_KWARGS) |
| 71 | |
| 72 | self.config = Config(**config_kwargs) |
| 73 | |
| 74 | def init_signals(self) -> None: |
| 75 | # Reset signals so Gunicorn doesn't swallow subprocess return codes |