Один из вариантов - разместить работу в какой-либо очереди (вы можете использовать что-нибудь типа Enterprisey, например ActiveMQ с pyactivemq или STOMP в качестве соединителя или вы можете использовать что-то более легкое, например Kestrel , написанное на Scala и говорящее по тому же протоколу, что и memcache, поэтому вы можете просто использовать клиент python memcache для общения с ним).
После того, как вы настроили механизм организации очередей, вы можете создать столько рабочих заданий, сколько будет подписано в очереди и выполнять фактическую загрузку, как вам нужно. Вы даже можете использовать их на других компьютерах, чтобы они не влияли на скорость обслуживания вашего сайта. По окончании работы они отправляют результаты обратно в базу данных или в другую очередь, где веб-сервер может их забрать.
Если вы не хотите управлять внешними рабочими процессами, вы можете создать рабочие потоки в том же процессе python, на котором работает веб-сервер, но тогда, очевидно, он будет иметь больший потенциал для влияния на производительность обслуживания вашей веб-страницы.