В настоящее время моя структура составляет Flask, Redis, RabbitMQ and Celery
. В моих выскабливаниях я использую requests
и BeautifulSoup
. Моя колба работает на apache и wsgi. Это на prod. С app.run(threaded=True)
Скребковый сайт с использованием сельдерея
У меня есть 25 API. 10 - очистить URL-адрес, например заголовки и т. Д., А остальное - использовать сторонний API для этого URL-адреса.
Я использую аккорд для обработки моих API-интерфейсов и получения данных из API-интерфейсов с использованием requests
.
Для моего заголовка аккорда у меня есть 3 рабочих, в то время как на моем обратном вызов У меня есть только 1. Я имею проблему узкого места наличия ConnectTimeoutError
и MaxRetryError
. Когда я прочитал какой-то поток, он сказал сделать тайм-аут для каждого процесса, потому что эта ошибка означает, что вы перегружаете удаленный сервер.
Проблема в том, что я использую аккорд, нет смысла использовать время сна, так как вызов 25 API будет выполняться одновременно. Кто-нибудь столкнулся с этим? Или я делаю это неправильно?
Поток, который я читаю, кажется, говорит, чтобы изменить запросы на pycurl или использовать Scrapy. Но я не думаю, что это так, поскольку ConnectTimeoutError
касается моего хоста, перегружающего определенный сервер URL.
Мой процесс аккорд:
callback = create_document.s(url, company_logo, api_list)
header = [api_request.s(key) for key in api_list.keys()]
result = chord(header)(callback)
В api_request запросов задач используется.
У вас есть ссылка документацию или образец кода? – Bazinga
Я добавил ссылку для вас. –