1
我在遇到我致電api.say()
失敗的問題。我知道它是一個協程,需要從中得到,但如果我的print_all
是標準函數,那麼這個協議是有效的。從事件流中運行asyncio協同程序
什麼是構造這個例子的正確方法?
請假定客戶端不可更改,只有我的示例中的代碼。
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