mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add DNS cache ttl setting to aiohttp session. (#1514)
* Add DNS cache ttl setting to aiohttp session. Also the limit argument is added to the session initializer. This commit adds a setting for DNS cache ttl (time-to-live) to the aiohttp session configuration. This is implemented as a workaround for a known issue in aiogram as exhibited in aiogram/aiogram#1500. * Added changelog
This commit is contained in:
parent
835813ca2e
commit
dcfc9632f3
2 changed files with 14 additions and 3 deletions
1
CHANGES/1500.bugfix.rst
Normal file
1
CHANGES/1500.bugfix.rst
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Increased DNS cache ttl setting to aiohttp session as a workaround for DNS resolution issues in aiohttp.
|
||||||
|
|
@ -23,11 +23,10 @@ from aiohttp.http import SERVER_SOFTWARE
|
||||||
|
|
||||||
from aiogram.__meta__ import __version__
|
from aiogram.__meta__ import __version__
|
||||||
from aiogram.methods import TelegramMethod
|
from aiogram.methods import TelegramMethod
|
||||||
|
from .base import BaseSession
|
||||||
from ...exceptions import TelegramNetworkError
|
from ...exceptions import TelegramNetworkError
|
||||||
from ...methods.base import TelegramType
|
from ...methods.base import TelegramType
|
||||||
from ...types import InputFile
|
from ...types import InputFile
|
||||||
from .base import BaseSession
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from ..bot import Bot
|
from ..bot import Bot
|
||||||
|
|
@ -86,13 +85,24 @@ def _prepare_connector(chain_or_plain: _ProxyType) -> Tuple[Type["TCPConnector"]
|
||||||
|
|
||||||
|
|
||||||
class AiohttpSession(BaseSession):
|
class AiohttpSession(BaseSession):
|
||||||
def __init__(self, proxy: Optional[_ProxyType] = None, **kwargs: Any) -> None:
|
def __init__(
|
||||||
|
self, proxy: Optional[_ProxyType] = None, limit: int = 100, **kwargs: Any
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Client session based on aiohttp.
|
||||||
|
|
||||||
|
:param proxy: The proxy to be used for requests. Default is None.
|
||||||
|
:param limit: The total number of simultaneous connections. Default is 100.
|
||||||
|
:param kwargs: Additional keyword arguments.
|
||||||
|
"""
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
self._session: Optional[ClientSession] = None
|
self._session: Optional[ClientSession] = None
|
||||||
self._connector_type: Type[TCPConnector] = TCPConnector
|
self._connector_type: Type[TCPConnector] = TCPConnector
|
||||||
self._connector_init: Dict[str, Any] = {
|
self._connector_init: Dict[str, Any] = {
|
||||||
"ssl": ssl.create_default_context(cafile=certifi.where()),
|
"ssl": ssl.create_default_context(cafile=certifi.where()),
|
||||||
|
"limit": limit,
|
||||||
|
"ttl_dns_cache": 3600, # Workaround for https://github.com/aiogram/aiogram/issues/1500
|
||||||
}
|
}
|
||||||
self._should_reset_connector = True # flag determines connector state
|
self._should_reset_connector = True # flag determines connector state
|
||||||
self._proxy: Optional[_ProxyType] = None
|
self._proxy: Optional[_ProxyType] = None
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue