Skip to content

Instantly share code, notes, and snippets.

@Sraw
Sraw / index.md
Last active December 25, 2017 08:56
Make tornado works with asyncio

tornado has its own event loop which is incompatible with asyncio's event loop. But it can be solved.

First, create a BaseHandler extended from tornado.web.RequestHandler:

class BaseHandler(tornado.web.RequestHandler):

    @staticmethod
    def asyncio_task(method):
        @functools.wraps(method)

async def wrapper(self, *args, **kwargs):

@Sraw
Sraw / index.md
Created December 25, 2017 09:00
Run asyncio event loop in sub-thread

asyncio won't automatically create event loop for sub-thread, so to run async tasks in sub-thread, we need to manually create an event loop first.

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
asyncio.ensure_future(task())

loop.run_forever()

@Sraw
Sraw / index.js
Last active December 28, 2017 08:39
Use plain javascript to generate bmp file.
function drawArray(arr) {
/*
Thanks original author @vukicevic
Usage:
Pass a two-dimensional arrary.
The first dimonsion is rows, the second one is columns.
Note that in columns, each pixel is represented by four nums as BGRA, so the columns' length is four times as image's length.
return image's base64 code.
*/