求大佬指导grpc python进行安全连接的代码(有PHP版本的代码,不过改写成python找不到对应的api。。555)

LeoHirasawa 2017-08-15 02:30:18
急求大佬,我现在在用python写grpc的客户端,用来获取数据提供商的股票数据。提供商只给了我一个PHP版本的代码用作指导,但是我需要用python写。其他地方都没有问题了,只有安全连接这个部分卡住了,查了两天也没查到解决办法。。用了好几种api可是都不行。情况就是有url,端口,.pem格式的证书以及账号和密码。大概的思路应该是在建立channel的时候带入额外的账号密码等信息?
求大佬帮忙看看用python怎么写呢。。跪谢大佬了!

下面为php代码:

下面为我写不好用的python代码:

from __future__ import print_function

import grpc

import historicalQuote_pb2
import historicalQuote_pb2_grpc
import common_pb2
import common_pb2_grpc
import marketData_pb2
import marketData_pb2_grpc

import os

from google import auth as google_auth
from google.auth.transport import grpc as google_auth_transport_grpc
from google.auth.transport import requests as google_auth_transport_requests

def run():
symbol = common_pb2.Symbol()
symbol.code = "BABA"
symbol.market = common_pb2.US
symbol.type = common_pb2.Stock

market_request = marketData_pb2.MarketDataRequest()
market_request.symbol.code = symbol.code
market_request.symbol.market = symbol.market
market_request.symbol.type = symbol.type
market_request.language = common_pb2.zhHans

print(market_request)

try:
path = os.path.abspath('.')
pemPath = path + '/open_test_cert.pem'
transport_creds = grpc.ssl_channel_credentials(open(pemPath).read())
options = []
update_metadata = {}
update_metadata2 = {}

update_metadata['UserName'] = 'xxxx'
update_metadata['Password'] = 'yyyy'
update_metadata2['grpc.ssl_target_name_override'] = 'open.test.yintongzhibo.com'
options.append(update_metadata)
# options.append(update_metadata2)
channel = grpc.secure_channel("open.test.yintongzhibo.com:9002",transport_creds,options)



# credentials , project= google_auth.default(scopes=(scope1,scope2,scope3))
# credentials , project= google_auth.default()
# http_request = google_auth_transport_requests.Request()
# metadata_plugin = AuthMetadataPlugin(credentials,http_request)
# google_auth_credentials = grpc.metadata_call_credentials(metadata_plugin)
# ssl_credentials = grpc.ssl_channel_credentials(open(pemPath).read())
# composite_credentials = grpc.composite_channel_credentials(ssl_credentials,google_auth_credentials)
# channel = grpc.secure_channel("open.test.yintongzhibo.com:9002",composite_credentials)
# channel = google_auth_transport_grpc.secure_authorized_channel(credentials,request,'open.test.yintongzhibo.com:9002')



stub = historicalQuote_pb2_grpc.HistoricalQuoteServiceStub(channel)
response = stub.getTodayM1Quotes(symbol)
# stub = marketData_pb2_grpc.MarketDataServiceStub(channel)
# response = stub.getMarketData(market_request)
print(response.message)

except Exception as e:
print (e)



if __name__ == '__main__':
run()
...全文
1315 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeoHirasawa 2017-08-15
  • 打赏
  • 举报
回复
求大佬啊。。。。
LeoHirasawa 2017-08-15
  • 打赏
  • 举报
回复
自顶。。

6,721

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 Google技术社区
社区管理员
  • Google技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧