Я хочу написать плагин vim, который будет прослушивать события, отправленные сервером . Поскольку я наиболее свободно владею python3 и использую neovim, я подумал, что было бы неплохо использовать API удаленного плагина neovim .
Очевидно, что прослушивание сообщений из сети должно не блокировать, поэтому нужно как-то задействовать asyncio. Но я не мог понять, как их совместить. Где-то надо было бы событие l oop запустить. Однако pynvim уже запускает собственное событие l oop, поэтому мне, вероятно, следует подключиться к нему.
@pynvim.plugin
class MyPlugin:
def __init__(self, nvim):
self.nvim = nvim
@pynvim.command('Connect', nargs='1')
async def connect(self, args):
url = base_url + args[0]
async with sse_client.EventSource(url) as event_source:
for raw in event_source:
try:
msg = json.loads(raw)
except json.JSONDecodeError:
continue
do_something(msg)
Этот пример не работает. Команда Connect
недоступна в neovim (она была до того, как я сделал ее asyn c).