kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Почему не везде запускается поток с Selenium?

executor = ThreadPoolExecutor(max_workers=namespace.threads)
proxies = []
print('LOADED {} PROXIES'.format(len(proxies)))

def scrape(url, *, loop, proxy):
    loop.run_in_executor(executor, scraper, url, proxy)


def scraper(url, proxy):
    driver = webdriver.Chrome(executable_path='chromedriver')
    driver.get(url)



loop = asyncio.get_event_loop()
scrape(namespace.url, loop=loop, proxy=namespace.backconnect)
loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop)))


Этот код изначально запускал Firefox. Вариант и с Firefox и c Chrome отлично работают на моем компьютере, VDS с Windows\Ubuntu от Google Cloud и еще одном VDS от нонейм-хостера.
В VirtualBox Windows 10 с хост-системой Mac OS Firefox работать не захотел. Приложение просто моментально без какой-либо ошибки завершало свою работу после строки print(). Попробовал заменить на Chrome - заработало.
Дальше попробовал запустить версию с Chrome на самом Mac OS - результата ноль, просто после print() программа закрывается без ошибки и статуса.
Запустил в режиме pdb, дошел до строки
loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop)))

Дальше вывод:
(1)()->None
(Pdb) next()
The program finished and will be restarted

Попробовал в print() запихнуть эту строку, вывод:
[]

В чем может быть проблема, почему такое поведение?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
kshnkvn
@kshnkvn Автор вопроса
yay ✌️ t.me/kshnkvn
Выяснилось, что на и на Mac OS и в VirtualBox была какая-то лажа с правами доступа, сами потоки стартовались отлично, а вот webdriver в них - нет, для Mac OS пришлось для chromedriver устанавливать chmod 755, для Windows - с правами администратора запускать. Какой-то абсурд, но теперь все работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
Памяти не хватает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы