Ausführungsreihenfolge in Fastapi -Async -GeneratorenPython

Python-Programme
Anonymous
 Ausführungsreihenfolge in Fastapi -Async -Generatoren

Post by Anonymous »

Dies ist der Code < /p>

Code: Select all

@router.post("/tel/verify-otp",
summary="Verify OTP and update user tel number"
)
async def verify_tel_otp(
command: UpdateTelCommand = Body(...),
handler: VerifyTelOtpHandler = Depends(get_verify_tel_otp_handler),
):
await handler.handle(command=command)
print('After handler')
return {
"message": tm(key="success"),
"data": None
}
< /code>
und < /p>
async def get_verify_tel_otp_handler(
uow: UnitOfWork = Depends(get_unit_of_work),
current_user = Depends(get_current_user)
) -> VerifyTelOtpHandler:
return VerifyTelOtpHandler(uow=uow, current_user=current_user)
< /code>
und < /p>
async def get_db_session() -> AsyncSession:
session = async_session_factory()
print('before yield')
yield session
print('after yield')

async def get_current_user(
token: str = Depends(oauth2_scheme),
session: AsyncSession = Depends(get_db_session)
) -> Union[User, None]:
token_hash = generate_token_hash(token)
user_repo = UserRepository(session)
user = await user_repo.get_by_token(token_hash)
if not user:
raise UnauthorizedError()
return user
< /code>
und < /p>
class VerifyTelOtpHandler:
# Constants
TASK_TYPE_PHONE_CONFLICT = 8
TASK_STATUS_OPEN = 2
CONFLICT_RESOLUTION_DAYS = 2

def __init__(self, uow: UnitOfWork, current_user: User):
self.uow = uow
self.current_user = current_user

async def handle(self, command: UpdateTelCommand) -> None:
print('start of handler')
async with self.uow as uow:
await self._validate_otp(command, self.uow)
...
< /code>
Wenn ich jetzt die API aufrufe, ist dies die Ausgabe: < /p>
before yield
start of handler
After handler
after yield
< /code>
Die Frage lautet: Warum sehe ich die Reihenfolge der Ausgänge auf diese Weise? < /p>
before yield
start of handler
After handler
after yield
Warum wird nach Ertrag nach dem After -Handler ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post