mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
hotfix(dispatcher): prop DP.loop may be None, executor and webhook view should respect that (#424)
This commit is contained in:
parent
369bff422a
commit
7c65344dcd
3 changed files with 12 additions and 6 deletions
|
|
@ -1,3 +1,5 @@
|
|||
import asyncio
|
||||
|
||||
from aiogram.dispatcher.middlewares import BaseMiddleware
|
||||
|
||||
|
||||
|
|
@ -14,7 +16,7 @@ class EnvironmentMiddleware(BaseMiddleware):
|
|||
data.update(
|
||||
bot=dp.bot,
|
||||
dispatcher=dp,
|
||||
loop=dp.loop
|
||||
loop=dp.loop or asyncio.get_event_loop()
|
||||
)
|
||||
if self.context:
|
||||
data.update(self.context)
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ class WebhookRequestHandler(web.View):
|
|||
:return:
|
||||
"""
|
||||
dispatcher = self.get_dispatcher()
|
||||
loop = dispatcher.loop
|
||||
loop = dispatcher.loop or asyncio.get_event_loop()
|
||||
|
||||
# Analog of `asyncio.wait_for` but without cancelling task
|
||||
waiter = loop.create_future()
|
||||
|
|
@ -209,7 +209,7 @@ class WebhookRequestHandler(web.View):
|
|||
TimeoutWarning)
|
||||
|
||||
dispatcher = self.get_dispatcher()
|
||||
loop = dispatcher.loop
|
||||
loop = dispatcher.loop or asyncio.get_event_loop()
|
||||
|
||||
try:
|
||||
results = task.result()
|
||||
|
|
|
|||
|
|
@ -123,13 +123,13 @@ class Executor:
|
|||
"""
|
||||
|
||||
def __init__(self, dispatcher, skip_updates=None, check_ip=False, retry_after=None, loop=None):
|
||||
if loop is None:
|
||||
loop = dispatcher.loop
|
||||
if loop is not None:
|
||||
self._loop = loop
|
||||
|
||||
self.dispatcher = dispatcher
|
||||
self.skip_updates = skip_updates
|
||||
self.check_ip = check_ip
|
||||
self.retry_after = retry_after
|
||||
self.loop = loop
|
||||
|
||||
self._identity = secrets.token_urlsafe(16)
|
||||
self._web_app = None
|
||||
|
|
@ -145,6 +145,10 @@ class Executor:
|
|||
Bot.set_current(dispatcher.bot)
|
||||
Dispatcher.set_current(dispatcher)
|
||||
|
||||
@property
|
||||
def loop(self) -> asyncio.AbstractEventLoop:
|
||||
return getattr(self, "_loop", asyncio.get_event_loop())
|
||||
|
||||
@property
|
||||
def frozen(self):
|
||||
return self._freeze
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue