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