機能私のflask-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回目の反復で 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()を呼び出し、ループの各反復で私のSockeioクライアントにアップデートを発行することができます。
_non async
_関数にawait
を呼び出したときにもこのエラーが発生しました。
例えば.
_def do_something():
print("Do Something")
async erroneous_function():
await do_something()
_
解決策は簡単です、do_something()
の前にawait
を削除してから、非同期ではありません。
フラスコとフラスコ - ソケットは非同期では機能しません。 Asyncio Stuff、またはELSE Flaskとflask-socketioを削除し、Python-Socketioを使用しています。これはASYNCIOをサポートします。