私はdata_received関数でデータベースに非同期要求を行いますが、どうしたらよいか分かりません。 asyncio.sleep(2)で単純なHTTPServerを書きましたが、動作しません。data_receivedでasyncio yieldを修正する方法
import time
import asyncio
class HTTPServer:
def connection_made(self, transport):
self.transport = transport
pass
def connection_lost(self, exc):
pass
def eof_received(self):
pass
@asyncio.coroutine
def data_received(self, data):
try:
#time.sleep(2)
yield from asyncio.sleep(2)
body = "Hello <br/>\n"
response = 'HTTP/1.1 {status}\r\n'.format(status="200")
response += 'Content-Length: {size}\r\n'.format(size=len(body))
response += 'Content-Type: text/html; charset=utf-8\r\n'.format(size=len(body))
response += 'Connection: close\r\n'.format(size=len(body))
response += '\r\n'
response += body
self.transport.write(response.encode('utf-8'))
except e:
print (e)
self.transport.close()
loop = asyncio.get_event_loop()
print ('Start server on 0.0.0.0:8080')
asyncio.ensure_future(loop.create_server(
lambda: HTTPServer(),
'0.0.0.0', 8080
))
try:
loop.run_forever()
pass
except KeyboardInterrupt:
loop.stop()
私はコメント行asyncio.coroutineとasyncio.sleep(2)からの利回り、それは動作します。私はasyncio.sleep(2)の代わりにtime.sleep(2)を追加します。しかし、非同期は機能しません。
私は間違っていますか?あなたが使用している