Проблема в том, что не могу запустить парсер в отдельном потоке. Для демонстрации проблемы вот такой код накидала:
from PyQt4 import QtCore import asyncio import aiohttp class Main(QtCore.QThread): def __init__(self): super(Main, self).__init__() def run(self): loop = asyncio.get_event_loop() with aiohttp.ClientSession(loop=loop) as session: content = loop.run_until_complete( self.fetch_page(session, 'http://python.org')) print(content) async def fetch_page(session, url): with aiohttp.Timeout(10): async with session.get(url) as response: assert response.status == 200 return await response.read() app = QtCore.QCoreApplication([]) m = Main() m.start() m.wait() app.exec_()
traceback вот такой
Traceback (most recent call last):
File “/Users/marina/PycharmProjects/temp/temp2.py”, line 12, in run
loop = asyncio.get_event_loop()
File “/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/events.py”, line 626, in get_event_loop
return get_event_loop_policy().get_event_loop()
File “/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/events.py”, line 572, in get_event_loop
% threading.current_thread().name)
RuntimeError: There is no current event loop in thread ‘Dummy-1’.
Единственное, что приходит сейчас в голову, это использовать multiprocessing, но может все таки можно в потоке все это дело запустить?