requests_html Django «В потоке»Поток-1″ нет текущего цикла событий».

#python #python-3.x #django #python-requests-html

Вопрос:

Хорошо, у меня в Django есть такая конфигурация в urls.py:

 urlpatterns = [
    path('', views.index),
]
 

и в views.py функция индекса, в которой я передаю переменную URL, у меня есть с requests_html:

 from django.http import HttpResponse
from django.core.validators import URLValidator
from requests_html import HTMLSession
from bs4 import BeautifulSoup
from .main import *

def index(request):
    url = request.GET.get('url')
    # URLValidator...
    session = HTMLSession()
    resp = session.get(url)
    resp.html.render()
 
 resp.html.render()
  File "/home/noname/.local/lib/python3.8/site-packages/requests_html.py", line 586, in render
    self.browser = self.session.browser  # Automatically create a event loop and browser
  File "/home/noname/.local/lib/python3.8/site-packages/requests_html.py", line 727, in browser
    self.loop = asyncio.get_event_loop()
  File "/usr/lib/python3.8/asyncio/events.py", line 639, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'

RuntimeError: There is no current event loop in thread 'Thread-1'.
 

Но я получаю ошибку при вызове render (), и я не использую потоки, есть идеи?

Комментарии:

1. Покажите нам полный отчет об ошибках!

2. Покажите нам также свой импорт (что это HTMLSession такое ? — Я не думаю, что это от джанго..?)

3. Текущее сообщение об ошибке может быть более информативным «Не удается использовать HTMLSession в существующем цикле событий. Вместо этого используйте AsyncHTMLSession.» (из github.com/psf/requests-html/blob/… )

4. Если вы работаете manage.py runserver , то по умолчанию он многопоточный. Вы можете обойти это, используя --nothreading ( docs.djangoproject.com/en/3.2/ref/django-admin/#runserver )

5. с помощью —nothreading получите «В потоке ‘django-основной поток’ нет текущего цикла событий» …