У меня проблемы, когда мой звонок api.say()
не удался. Я понимаю его coroutine и должен быть уступлен, но это действительно, если моя print_all
является стандартной функцией.Запуск asyncio coroutine из потока событий
Каков правильный способ структурирования этого примера?
Предположим, что Клиент не подлежит изменению, только код в моем примере.
from .client import Client
import asyncio
api = Client()
login = ('', '')
def print_all(b=None, m=None):
print("Buffer!", b)
print("Message", m)
if b and m:
if b.name == 'bat':
print("-sending to", b)
api.say(b, "Hey yo."): # <----
def main():
api.login(*login)
api.register_message_callback(print_all)
api.register_state_callback(print_all)
loop = asyncio.get_event_loop()
loop.run_until_complete(api.run())
loop.close()
if __name__ == '__main__':
main()
Спасибо 'asyncio.ensure_future (api.say (..))' исправлена проблема. Мой клиент не обрабатывал обратные вызовы как сопрограммы, поэтому '.ensure_future (...)' отсортировал его. – PsyKzz