Python RP C Функция модуля времени не найдена - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь начать работу с Python + gRCP, поэтому я проверил их репозиторий, как указано в руководстве gRP C (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 -объект обратно в это сообщение, которое я возвращаю при вызове этой функции - но что происходит, так это следующая ошибка:

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

Я попытался найти в Google и обнаружил, что это может произойти, если у вас есть файл с именем 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, если это важно.

1 Ответ

1 голос
/ 22 апреля 2020

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

...