pub = await aioredis.create_redis('redis://localhost')
оставить в __main__
и сам pub
передавать в качестве аргумента? Ок.multiprocessing
работает вроде ничего не зациклилось. Может поищу что-то среднее между паблик и приват прокси, тогда уберу while
По поводу "впихнуть пару строк" — можно попробовать оставить в первом скрипте, который качает данные. Я почти уверен, что одна регулярка почти не помешает IO операциям
response = await r.text()
match = re.search(r'[\w\.-]+@[\w\.-]+', response)
response = await r.text()
match = re.search(r'[\w\.-]+@[\w\.-]+', response)
asyncio
буду выгребать все 4 сайта и отдавать их через redis
выполняться в multiprocessing
?asyncio
что может замедлить работу. Т.е. мне в любом случае нужно 100% грузить как минимум 2 страницы, если я буду грузить всегда 4 страницы, то это может быть быстрее, чем если создавать дополнительные асинхронные выполнения? Причём, количество процессов бессмысленно указывать больше, чем ядер у тебя в компуктере.
Можно. Написать нормально
Увы, говнокод на то и говнокод
но человек считает что все эти решения оверхед
который считает себя умнее остальных
Мы же тебе помочь хотим, а ты сопротивляешься
Поставь семафор на 100 одновременных соединений, тебе хватит
ValueError
. Но при 300 соединениях все значительно медленнее.О каких потоках в asyncio ты говоришь?
soup.decompose()
мог-бы помочь избавиться от утечки памяти? Сейчас перезапускать скрипт точно не буду, но в следующий раз попробую, может действительно беда в том, что не сразу из памяти удаляется объект soup
. Хотя если это так в 100% случаев, то у меня сразу после запуска скрипта память закончилась-бы. ValueError: too many file descriptors in select()
при ~350-400 потоках. Этого недостаточно.