Возможно, вам потребуется добавить '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.