Use threads for non-blocking requests

Can't block a Django view!

An optional callback function is called after the request completes in the
thead.