Асинхронный запуск 10 функций в представлениях Djano с использованием Asyncio - PullRequest
0 голосов
/ 10 июля 2020

Я столкнулся с трудностями при попытке выполнить около 10 функций одновременно с использованием asyncio в Django. Я не смог найти четкой документации о том, как использовать asyncio с django.

. Я сделал около 10 HTTP-запросов на разные, используя TOR, который по умолчанию медленный. Вместо того, чтобы делать эти запросы по одному, что обычно занимает около 2 минут, я хотел выполнить все 10 запросов одновременно. Есть 10 различных функций, каждая из которых делает http-запрос другого URL-адреса и очищает данные и возвращает JSON.

URLscrape.py :

async def scrape1(username):
    response = request.get('http://example.com'+username)
    return response.json()

async def scrape2(username):
    response = request.get('http://something.com'+username)
    return response.json()

У меня 10 отдельные функции, подобные приведенным выше, с разными URL-адресами и парсингом и возвращают данные json. В просмотрах Django мне понравилось это:

Views.py

from URLscrape import scrape1, scrape2........scrape10

def scrapper():
    loop = asyncio.get_event_loop()
    feature1 = loop.run_in_executor(None, scrape1, username)
    feature2 = loop.run_in_executor(None, scrape2, username)
    ....
    feature10 = loop.run_in_executor(None, scrape10, username)

    response1 = await future1
    response2 = await future2 
    .....
    response10 = await future10
 
    response1 = response1.text
    ......
    response10 = response2.text
  
    return render(request, 'index.html', {'scrape1':response1,'scrape10':response10})

Но я не знаю, как использовать l oop. run_until_complete () , чтобы завершить сценарий. Я нахожусь в ограниченной ситуации, чтобы использовать 10 отдельных функций для списания. Я хочу запустить 10 одновременно, но не знаю как. Я не мог понять концепцию и синтаксис asyncio. Помогите пожалуйста !!!

...