Мониторинг очереди tornado AsyncHttpClient при достижении max_clients

#python #python-2.7 #tornado

#python #python-2.7 #tornado

Вопрос:

В крупномасштабном приложении tornado мы используем shared AsyncHTTPClient для наших исходящих запросов с предварительно установленным max_clients.

 http_client = tornado.httpclient.AsyncHTTPClient(max_clients=100)

class SomeHandler(tornado.web.RequestHandler):

    @tornado.gen.coroutine
    def get(self, *args, **kwargs):
        response = yield tornado.gen.Task(http_client.fetch, <some_url>, method='GET')
        ...
  

Что я хотел бы спросить, есть ли способ увидеть в любой момент времени, max_clients был ли достигнут порог и каково количество запросов в очереди, чтобы помочь нам увеличить его при необходимости?

Ответ №1:

В настоящее время нет поддерживаемого способа сделать это. Вы можете просмотреть детали реализации реализации AsyncHttpClient (без каких-либо гарантий относительно будущей совместимости) или обернуть объект AsyncHttpClient чем-то, что сохраняет количество ожидающих выборок.

Комментарии:

1. Спасибо @ben-darnell . На данный момент я нашел обходной путь, отслеживая time_info.queue объекты ответа (мы используем CurlAsyncHTTPClient)