The Filter is a bytes field, json.dumps() returns str so your code works 
with python 2 but does not work with python 3: In python2 str is byte 
strings, in python3 str is unicode.

To make it work with python 3, you can encode it to bytes after 
json.dumps: Filter=json.dumps(filter_dict).encode()


On Monday, August 27, 2018 at 9:52:01 AM UTC-7, [email protected] wrote:
>
>       1 syntax = "proto3";
>       2 
>       3 option java_multiple_files = true;
>       4 option java_package = "io.grpc.UtrServer";
>       5 option java_outer_classname = "UtrServerProto";
>       6 option objc_class_prefix = "UtrServer";
>       7 
>       8 package UtrSSXFilterServer;
>       9 
>      10 service UtrSSXFilterServer {
>      11     rpc register_server_details (ServerDetails) returns 
> (UtrFilterServerResp) {}
>      12     rpc filter_add(SSXFilter) returns (UtrFilterServerResp) {}
>      13     rpc filter_del(SSXFilter) returns (UtrFilterServerResp) {}
>      14     rpc get_current_config(Empty) returns (ConfigData) {}
>      15 }
>      16 
>      17 message ServerDetails {
>      18     string ipAddress = 1;
>      19     string port = 2;
>      20 }
>      21 
>      22 message UtrFilterServerResp {
>      23     bool response = 1;
>      24 }
>      25 
>      26 message SSXFilter {
>      27     bytes Filter = 1;
>      28 }
>      29 
>      30 message ConfigData {
>      31     ServerDetails Details = 1;
>      32     bytes Config = 2;
>      33 }
>
>
> On Wednesday, August 15, 2018 at 5:25:37 PM UTC-7, [email protected] 
> wrote:
>>
>> Hello All, using python 3 the self.stub.filter_add() call below  receives 
>> the following Traceback.  It was my understanding the json.dumps() would 
>> correct this, but does not.  Any ideas what might be causing this problem?
>>
>>
>>
>>     def filter_add(self, filter_dict):
>>          return 
>> self.stub.filter_add(UtrSSXFilterServer.SSXFilter(Filter=json.dumps(filter_dict)))
>>
>> Traceback (most recent call last):
>>   File 
>> "/root/utr-tc/lib/python3.4/site-packages/google/protobuf/internal/python_message.py",
>>  
>> line 526, in init
>>     setattr(self, field_name, field_value)
>>   File 
>> "/root/utr-tc/lib/python3.4/site-packages/google/protobuf/internal/python_message.py",
>>  
>> line 662, in field_setter
>>     new_value = type_checker.CheckValue(new_value)
>>   File 
>> "/root/utr-tc/lib/python3.4/site-packages/google/protobuf/internal/type_checkers.py",
>>  
>> line 109, in CheckValue
>>     raise TypeError(message)
>> TypeError: '{"switchName": "null", "ssxEvent": "GET_PFC_SEND_RECV_P"}' 
>> has type <class 'str'>, but expected one of: ((<class 'bytes'>,),)
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/ce46db6e-af13-4850-a4af-62a5f5e49f81%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to