RuntimeError: В проекте Django нет текущего цикла событий в потоке 'Thread-1'

У меня есть проект Django, который должен анализировать некоторые данные с определенного веб-сайта и сохранять их в базе данных.

В приложении я использую requests_html, который каким-то образом зависит от asyncio, который выдает ошибку каждый раз, когда я пытаюсь сделать запрос. (Я должен использовать requests_html, а не beautifulsoup, потому что мне нужно, чтобы скрипты были преобразованы в html)

Вот изолированная проблема:

# project/app/render_js.py

import requests_html


def render_js(url):
    session = requests_html.HTMLSession()
    r = session.get(url)
    r.html.render()
    return r.html.text
# project/project/views

from django.http import HttpResponse
from app.render_js import render_js

url = 'some url'

def view(request):
    print(render_js(url))
    return HttpResponse("<h1>success!</h1>")
# project/project/urls

from django.urls import path
from .views import view

urlpatterns = [
    path('', view)
]

При попытке выполнить GET запрос к http://127.0.0.1:8000/ бросается:

Внутренняя ошибка сервера: / Traceback (последний последний вызов): File "C:\Users\User\PycharmProjects\project\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) Файл "C:\Users\User\PycharmProjects\project\venv\lib\site-packages\django\core\handlers\base.py", строка 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) Файл "C:\Users\User\PycharmProjects\project\project\project\views.py", строка 6, in view print(render_js('https://docs.python.org/3.7/library/threading.html#threading.Thread.run')) Файл "C:\Users\User\PycharmProjects\project\app\render_js.py", строка 7, in render_js r.html.render() Файл "C:\Users\User\PycharmProjects\project\venv\lib\site-packages\requests_html.py", строка 586, в render self.browser = self.session.browser # Автоматическое создание цикла событий и браузера Файл "C:\Users\User\PycharmProjects\project\venv\lib\site-packages\requests_html.py", строка 727, в browser self.loop = asyncio.get_event_loop() Файл "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", строка 642, в get_event_loop raise RuntimeError('В потоке %r нет текущего цикла событий'. RuntimeError: Нет текущего цикла событий в потоке 'Thread-1'.

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