#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-основной поток’ нет текущего цикла событий» …