python使用pycurl接口调用modelarts推理服务

举报
星月菩提 发表于 2020/12/30 15:59:22 2020/12/30
【摘要】 如果使用python代码pycurl实现推理服务的调用

iam_token.json文件和input.json文件准备参见,注意事项也参考

https://bbs.huaweicloud.com/blogs/233074

下面的代码需要根据自己的服务进行获取,获取方式同样参考https://bbs.huaweicloud.com/blogs/233074

代码一共分两部分,第一部分是获取token,第二部分是调用推理请求。获取token的代码每12个小时更新一次就可以,不能频繁的调用,如果每次推理请求都调用一次token的更新,会导致获取token请求被拒绝。

import pycurl
import json
import sys
import os
import certifi
from io import BytesIO


class Storage:
    def __init__(self):
        self.contents = ''
        self.line = 0

    def store(self, buf):
        self.line = self.line + 1
        self.contents = "%s%i: %s" % (self.contents, self.line, buf)

    def __str__(self):
        return self.contents

retrieved_body = Storage()
retrieved_headers = Storage()

buffer = BytesIO()
c = pycurl.Curl()
f = open('./iam_token.json')
data=f.read()
f.close()
c.setopt(c.URL,'https://iam.cn-east-3.myhuaweicloud.com/v3/auth/tokens')
c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json;charset=utf8'])
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(c.WRITEFUNCTION, retrieved_body.store)
c.setopt(c.HEADERFUNCTION, retrieved_headers.store)
c.perform()
c.close()

tmp_rec_data=retrieved_headers.contents.split("\\r\\n")
tmp_token=""
for each_item in tmp_rec_data:
    if "X-Subject-Token" in each_item:
        start_index=each_item.find("X-Subject-Token")
        tmp_token=each_item[(start_index + len("X-Subject-Token")):]
token_value = "X-Auth-Token" + tmp_token
#print(token_value)



c = pycurl.Curl()
buffer = BytesIO()
c.setopt(pycurl.HTTPHEADER, [token_value,'Content-Type: application/json;charset=utf8'])
c.setopt(c.URL,'https://xxxxx.apig.cn-east-3.huaweicloudapis.com/v1/infers/xxxxx')
c.setopt(pycurl.POST, 1)
c.setopt(c.WRITEDATA, buffer)
f = open('./input.json')
request_data=f.read()
f.close()
#print(request_data)
c.setopt(pycurl.POSTFIELDS, request_data)
c.perform()
c.close()
body = buffer.getvalue()
print(body.decode('utf-8'))



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。