P#
Size: a a a
P#
P#
G
P#
P#
@dp.message_handler(content_types=[ContentType.ALL], state=MyState.state)
async def record_msgs(m: Message, s: FSMContext):
async with state.proxy() as data:
item_id = data['id']
id_: int = await put_into_db(m, item_id) # не важно что оно делает
data['new_data'].append(id_)
return
G
P#
G
G
P#
P#
@dp.message_handler(content_types=[ContentType.ALL], state=MyState.state)
async def record_msgs(m: Message, s: FSMContext):
item_id = (await s.get_data())['id']
id_: int = await put_into_db(m, item_id)
new_data = (await s.get_data())['new_data']
new_data.append(id_)
await s.update_data(new_data=data)
P#
b'{"id": 1, "new_data": [41, 45, 46, 47]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49, 51]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49, 50]}'
s
FSMContext
.s
b'{"id": 1, "new_data": [41, 45, 46, 47]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49, 51]}'
b'{"id": 1, "new_data": [41, 45, 46, 47, 49, 50]}'
P#
async with _lock:
на весь хендлерs
acquire
потом release
, чтобы не было лишних индентов.s
P#
acquire
потом release
, чтобы не было лишних индентов.P#
P#
data = await get_data() # 1Потом контекст переключается
new_data = data.update_somehow_sync() # тут другая `data`Потом возвращается:
await set_data(new_data) # 0
new_data = data.update_somehow_sync()
await set_data(new_data) # 1