2
syntax = "proto3";

package gRPC_Forecaster;

import "google/protobuf/timestamp.proto";

service Forecaster {
    rpc Forecast (ProductToForecast) returns (ForecastData) {}
}

message ProductToForecast {
    int32 productID = 1;
    google.protobuf.Timestamp startDate = 2;
    int32 forecastDurationInWeeks = 3;
    Model model = 4;
}

message ForecastData {
    repeated int32 data = 1;
    repeated int32 date = 2;
}

message Model {
    oneof model_oneof {
        ARIMA arima = 1;
        SARIMA sarima = 2;
    }
}

message ARIMA{
    int32 p = 1;
    int32 d = 2;
    int32 q = 3;
}

message SARIMA{
    int32 p = 1;
    int32 d = 2;
    int32 q = 3;
    int32 p2 = 4;
    int32 d2 = 5;
    int32 q2 = 6;

}

以上是我的 gRPC 设置的 proto3 代码,其中我有一个 python 服务器和一个 PHP 客户端。
在 PHP 客户端上,我将模型对象设置为 ARIMA。
如何在我的 python 服务器上检查 request.model 的类型是 ARIMA 类型?
另外,我希望 PHP 客户端能够将模型设置为 ARIMA 或 SARIMA,我接近这个的方式是否正确?

4

2 回答 2

0

查看 potocol 缓冲区对生成代码的参考:

于 2020-03-27T03:04:14.090 回答
0

现在我找到了一个使用Python的hasattr()函数的解决方案。
因此,当我收到来自 PHP 应用程序的请求时,我可以做hasattr(request.model, "arima")并且可以工作。我不确定这是要走的路。

于 2020-03-26T15:57:28.217 回答