Функция модуля Python RPC Time не найдена

Я пытаюсь начать работу с Python + gRCP, поэтому я проверил их репозиторий, как указано в руководстве по gRPC (https://grpc.io/docs/quickstart/python/).

Теперь я мог выполнить Hello World-Script (клиент + сервер), и поэтому я попытался его изменить. Чтобы убедиться, что я ничего не неправильно сконфигурировал, я просто расширил функцию Hello World (которая раньше использовалась для работы). Я добавил следующие строки:

import time

def SayHello(self, request, context):
        currentTime = time.clock_gettime(time.CLOCK_REALTIME)
        return helloworld_pb2.HelloReply(message='Time is, %s!' % currentTime)

Теперь то, что я вообразил, это просто передать currentTime-объект обратно в этом сообщении, которое я возвращаю после вызова этой функции, но происходит следующая ошибка:

ОШИБКА: grpc._server: приложение, вызывающее исключение: объект 'module' не имеет атрибута 'clock_gettime' Traceback (последний вызов последним): файл "/home/user/.local/lib/python2.7/site-packages/grpc/ _server.py ", строка 435, в _call_behavior response_or_iterator = behavior (аргумент, контекст) Файл" greeter_server.py ", строка 29, в SayHello currentTime = time.clock_gettime (time.CLOCK_REALTIME) AttributeError: объект 'модуль' не имеет атрибута ' clock_gettime '

Я попытался погуглить и обнаружил, что это может произойти, если у вас есть файл с именем time в том же каталоге (поэтому Python путает файл в текущем каталоге с файлом времени. Однако такого файла нет, и он, кажется, находит правильный time-файл (поскольку я могу видеть документацию при наведении курсора на импорт и функцию). Что я здесь сделал не так?

"Полный" Код Сервера (до функции serve()):

from concurrent import futures
import logging
import time

import grpc

import helloworld_pb2
import helloworld_pb2_grpc


class Greeter(helloworld_pb2_grpc.GreeterServicer):

    def SayHello(self, request, context):
        currentTime = time.clock_gettime(time.CLOCK_REALTIME)
        return helloworld_pb2.HelloReply(message='Time is, %s!' % currentTime)

Изменить: я использую Ubuntu, если это важно.


person Rüdiger    schedule 22.04.2020    source источник


Ответы (1)


time.clock_gettime - это 3.3+ API, а вы используете 2.7.

person Lidi Zheng    schedule 22.04.2020