Возможно, вам потребуется добавить 'await' в ваше представление

Я работаю над проектом Django, который получает код состояния с веб-сайтов и сохраняет его в базе данных. Я хочу сделать это асинхронно, иначе это займет слишком много времени и выдаст ошибку. Поэтому после исследований и просмотра учебников я придумал этот код, но он выдает ошибку в заголовке.

views.py

@sync_to_async
async def get_page(session, url, urlMain):
    async with session.get(url) as response:
        st_code= await response.status
        return url, st_code, urlMain

@sync_to_async
async def create_search(request):
    form = SearchForm()
    if  request.method == 'POST':
        name = request.POST['name']

        tasks = []
        async with aiohttp.ClientSession() as session:
            for item in data:
                url = data[item]['url']
                urlMain =  data[item]['urlMain']
                tasks.append(get_page(session, url, urlMain))
            results = await asyncio.gather(*tasks)

        for url, st_code, urlMain in results:
            if st_code == 200:
                site_data = SearchResult(
                    url = urlMain,
                    sitename = item,
                )
                site_data.save()
                            
    context = {'form':form}
    return render(request, 'index.html', context )

Это ошибка, которую показывает django:

Значение исключения:
Представление main.views.SyncToAsync._вызов_ не вернул объект HttpResponse. Вместо этого он вернул не ожидаемую корутину. Возможно, вам потребуется добавить 'await' в ваш view.

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