Прервать функцию, запустив функциюPython

Программы на Python
Ответить
Anonymous
 Прервать функцию, запустив функцию

Сообщение Anonymous »

Код: Выделить всё

def get_contract_listener(access_token: str, callback: Callable[[int | None], Awaitable[None]]) -> None | Watch:
logger.debug('get contract listener')

contract = db.collection('Contract').where(filter=FieldFilter('access_token', '==', access_token)).get()

async def wrap(document: DocumentSnapshot):
await callback(123)

return cast(DocumentReference, contract[0].reference).on_snapshot(lambda doc, _, __: run(wrap(doc[0])))

async def api_websocket_wait_update(socket: WebSocket):
await socket.accept()
global first
first = True

token = socket.cookies.get('access_token')

async def callback(balance: int | None) -> None:
assert listener is not None
global first
if first:
first = False
return

await socket.send_json({'message': 'updated', 'balance': balance})
await socket.close(1000)
listener.unsubscribe()
# return ??

listener = get_contract_listener(token, callback)
await socket.send_json({'message': 'accepted'})

while True:
sleep(5)
Как отключить функцию api_websocket_wait_update от обратного вызова?
Если я просто вернусь, я прерву только обратный вызов.
Аналогичный вопрос для JS (но они запускали функцию из оригинала, но в этой ситуации я запускаю ее из обратного вызова прослушивателя)
p.s некоторые проверки кода удалены (например, существует контракт или предоставлен токен доступа), потому что stackoverflow говорит, что «ваш вопрос в основном состоит из кода»

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»