Twisted Server: как отслеживать количество запросов на сервер? - PullRequest
0 голосов
/ 04 октября 2018

Есть сервер Twisted, который дает ответы на запросы клиентов.LineOnlyReceiver используется для разработки протокола.Процесс должен идти следующим образом:

Клиент отправляет запрос на сервер (например, «TEMP?», Запрашивающий температуру), затем количество запросов на сервере должно увеличиться на 1. После отправки серверомВ ответ на ответ число должно уменьшиться на 1. Однако во время обработки сервером запроса («TEMP?») могут быть другие клиенты, отправляющие запросы на сервер, количество запросов на сервере должно изменяться со временем..

Так как же отслеживать количество запросов на сервере на лету?В настоящее время метод "lineReceived" используется для получения запросов от клиентов и отправки обратных ответов (другие коды не указаны):

Class SimProtocol(LineOnlyReceiver):
    def lineReceived(self, request):
        self.factory.taskNumber[request.strip()] += 1
        print 'Task number: ', self.factory.taskNumber[request.strip()]
        time.sleep(10)
        resp = self.factory.getResponse(request.strip())
        self.transport.write(resp)
        self.factory.taskNumber[request.strip()] -= 1
        print 'Task number: ', self.factory.taskNumber[request.strip()]

В середине добавлена ​​задержка в 10 секунд с целью имитации времени обработкизапросы.В течение 10 секунд на сервер было отправлено несколько других запросов, но сервер не отвечал на другие запросы, пока не завершил текущий.Другими словами, операторы «print» всегда показывают номер задачи 1, 0, 1, 0 ..., независимо от того, сколько клиентов отправляет запросы.

Так, какой подход к проектированию (вероятно,для достижения этой функциональности следует использовать совершенно другой вариант, например, получить размер очереди реактора?) (отслеживает количество запросов на сервере на лету)?

...