Я пытаюсь получить данные из канала Redis, используя подписку на моем клиентском приложении.Для этой цели я использую python с asyncio и aioredis.
Я хотел бы использовать свою подписку, чтобы обновлять переменную моего основного приложения при изменении этого на сервере, но я не могу передать данныеполучено из подписки на мою основную ветку.
Согласно aioredis website , я реализовал свою подписку с:
sub = await aioredis.create_redis(
'redis://localhost')
ch1 = await sub.subscribe('channel:1')
assert isinstance(ch1, aioredis.Channel)
async def async_reader(channel, globarVar):
while await channel.wait_message():
msg = await channel.get(encoding='utf-8')
# ... process message ...
globarVar = float(msg)
print("message in {}: {}".format(channel.name, msg))
tsk1 = asyncio.ensure_future(async_reader(ch1, upToDateValue))
Но я не могу обновить глобальную переменнуюЯ предполагаю, что Python передаст только текущее значение в качестве аргумента (что я ожидал, но хотел быть уверен).
Есть ли какой-либо жизнеспособный вариант для получения данных из подписки?или передать ссылку на общую переменную или очередь, которую я мог бы использовать?