Как сделать постоянную переменную в экземпляре asyncio? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь написать эхо-сервер на основе python3-asyncio.Я думал, что он может хранить и изменять переменную use в экземпляре класса asyncio.

Но я обнаружил, что, похоже, все соединения создадут новую переменную, поэтому он не сможет загрузить предыдущее значение.

Followкод асинхронного сервера:

class EchoServer(asyncio.Protocol):
    count = 0
    ts_last_update = 0

    def connection_made(self, transport):
        self.transport = transport
        ts_now = int(time.time())
        print('Previous count is:', self.count)
        self.count += 1                     # add 1 each connection
        if (ts_now - self.ts_last_update) > (3600 * 24):
            print('When expired, do something here.')
            self.ts_last_update = ts_now    # record last update timestamp

    def data_received(self, data):
        recv = data.decode()
        self.transport.write(('We got msg:{}'.format(recv)).encode())

Результат следующий, счетчик всегда равен 0.

Server agent running on ('127.0.0.1', 18888)
Connection accepted
Previous count is: 0
do something here.
Receive: [aa]
Connection accepted
Previous count is: 0
do something here.
Receive: [bb]
Connection accepted
Previous count is: 0
...