import uasyncio as asyncio
import signal
import errno


cnt = 0

@asyncio.coroutine
def serve(reader, writer):
    global cnt
    #s = "Hello.\r\n"
    s = "Hello. %07d\r\n" % cnt
    cnt += 1
    yield from reader.read()
    yield from writer.awrite("HTTP/1.0 200 OK\r\n\r\n")
    try:
        yield from writer.awrite(s)
        yield from writer.awrite(s * 100)
        yield from writer.awrite(s * 400000)
        yield from writer.awrite("=== END ===")
    except OSError as e:
        if e.args[0] == errno.EPIPE:
            print("EPIPE")
        elif e.args[0] == errno.ECONNRESET:
            print("ECONNRESET")
        else:
            raise
    finally:
        yield from writer.aclose()


import logging
logging.basicConfig(level=logging.INFO)
#logging.basicConfig(level=logging.DEBUG)
signal.signal(signal.SIGPIPE, signal.SIG_IGN)
loop = asyncio.get_event_loop()
#mem_info()
loop.call_soon(asyncio.start_server(serve, "0.0.0.0", 8081, backlog=100))
loop.run_forever()
loop.close()
