Я бы сделал запрос async к базе данных в функции data_received, но я не знаю, как это сделать. Я написал простой HTTPServer с asyncio.sleep (2), но он не работает.Как исправить выход asyncio из in data_received
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), это работает. Я добавляю time.sleep (2) вместо asyncio.sleep (2), это работает. Но async не работает.
Что я делаю неправильно?