Skip to content

Instantly share code, notes, and snippets.

@Sraw
Sraw / index.js
Last active Dec 28, 2017
Use plain javascript to generate bmp file.
View index.js
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.
*/
@Sraw
Sraw / index.md
Created Dec 25, 2017
Run asyncio event loop in sub-thread
View index.md

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.md
Last active Dec 25, 2017
Make tornado works with asyncio
View index.md

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):
You can’t perform that action at this time.