TypeError: объект NoneType нельзя использовать в выражении 'await' - PullRequest
0 голосов
/ 03 июля 2019

функция, которую я пытаюсь вызвать с моего флеш-сервера socketio

from flask_socketio import emit
import asyncio

async def myfunc():
     for i in range(10):
         j = 1*3
         await emit('update', {'j':j})

в моей функции сервера я работаю

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
task = asyncio.gather(myfunc())
loop.run_until_complete(task)

Я получаю ошибку на1-я итерация цикла один успешный выброс.

File "path\to\Python\Python37-32\Lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "path\to\Python\Python37-32\Lib\threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "path\to\lib\site-packages\socketio\server.py", line 636, in _handle_event_internal
    r = server._trigger_event(data[0], namespace, sid, *data[1:])
  File "path\to\lib\site-packages\socketio\server.py", line 665, in _trigger_event
    return self.handlers[namespace][event](*args)
  File "path\to\lib\site-packages\flask_socketio\__init__.py", line 280, in _handler
    *args)
  File "path\to\lib\site-packages\flask_socketio\__init__.py", line 694, in _handle_event
    ret = handler(*args)
  File "path\to\server.py", line 127, in print_message
    loop.run_until_complete(task)
  File "path\to\Python\Python37-32\Lib\asyncio\base_events.py", line 584, in run_until_complete
    return future.result()
  File "path\to\script.py", line 261, in fun
    await emit('update', {'j':j})
TypeError: object NoneType can't be used in 'await' expression

Я хочу иметь возможность вызывать myfunc () и выдавать обновление моему клиенту socketio на каждой итерации цикла for

1 Ответ

0 голосов
/ 04 июля 2019

Flask и Flask-SocketIO не работают с asyncio.Либо удалите материал asyncio, либо удалите Flask и Flask-SocketIO и используйте python-socketio, который поддерживает asyncio.

...