2016-06-05 2 views
1

У меня возникали проблемы с работниками сельдерей, из-за множества запросов HTTP в моих задачах. Я не понимал, почему. Оказалось, что задачи просто застревают в первой строке requests.post (хотя и не всегда). После нахождения касательных SO ответа относительно запросов, я пропатчен библиотеки запросов с:Почему исправление патча Eventle исправляет request.post в задаче Сельдерея?

#import requests 
import eventlet 
requests = eventlet.import_patched("requests") 

И все работает очень быстро и без проблем в настоящее время.

Мой вопрос: Что такое колдовство вуду - это событие, выполняющее мои задачи, как и следовало ожидать?

+0

Для правильного ответа, пожалуйста, сообщите о параллельном режиме сельдерея или используемой командной строке для запуска сельдерея (можно увидеть в 'ps -ef'). – temoto

ответ

0

Я предполагаю, что вы имели в виду тайм-аут задачи, как во время срока действия сельдерея, так и в виде мягкого времени. Если это означает, что время ожидания библиотеки истекает, то следующий ответ не применяется.

Если вы используете eventlet как processpool, тогда это исправление просто заставило вашу библиотеку запросов вести себя так, как предполагается, что она ведет себя в неблокирующей среде исполнения. Если вы используете prefork как pocesspool, то может случиться так, что вы не используете ответ из запроса request.post. В этом случае исправление паттерна просто заставило вашу библиотеку запросов не блокировать. Поскольку он больше не блокируется, ваша задача может двигаться дальше, и, следовательно, вы не видите тайм-аут задачи, независимо от того, какой ответ/тайм-аут происходит на уровне библиотеки запросов

Смежные вопросы