Django sync to async

У меня есть этот json файл ниже, я написал код, чтобы проверить существует ли имя пользователя на этих сайтах или нет, используя библиотеку запроса, проблема в том, что это занимает слишком много времени и возвращает эту ошибку.

('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

Я пытался сделать это быстрее, используя asyncio, к сожалению, я не смог преобразовать это представление в async, так как не было учебника, демонстрирующего то, что я пытаюсь реализовать. Я прочитал документацию библиотеки django sync_to_async тоже.

{
   "BuyMeACoffee": {
      "errorType": "status_code",
      "url": "https://buymeacoff.ee/{}",
      "urlMain": "https://www.buymeacoffee.com/",
      "urlProbe": "https://www.buymeacoffee.com/{}",
    },
    "BuzzFeed": {
      "errorType": "status_code",
      "url": "https://buzzfeed.com/{}",
      "urlMain": "https://buzzfeed.com/",
    },
    "CNET": {
      "errorType": "status_code",
      "url": "https://www.cnet.com/profiles/{}/",
      "urlMain": "https://www.cnet.com/",
    }, ....

}

Это синхронный код, который я написал:

def create(request):
    form = SearchForm()
    if  request.method == 'POST':
        name = request.POST['name']

        with open('sites-data.json') as f:
            data = json.load(f)
            mod_data = json.loads(json.dumps(data).replace("{}",name))

            search_term = SearchTerm(
                user = request.user,
                name = name
                )
            search_term.save()

            for item in mod_data:
                if mod_data[item]['errorType'] == "status_code":
                    url = mod_data[item]['url']
                    urlMain =  mod_data[item]['urlMain']
                    response = requests.get(url)
                    status_code = response.status_code
                    

                    if status_code == 200:
                        site_data = SearchResult(
                            term = search_term,
                            url = urlMain,
                            sitename = item,
                            search_status = 'CLAIMED',
                        )
                        site_data.save()
                    else:
                            site_data = SearchResult(
                                term = search_term,
                                url = urlMain,
                                sitename = item,
                                search_status = 'AVAILABLE',
                            )
                            site_data.save()
                            
    context = {'form':form}
    return render(request, 'main/search.html', context )

Как преобразовать этот код в async?

Вернуться на верх