云服务器内容精选
-
Protobuf格式下载 参见初始化DIS客户端的操作初始化一个DIS客户端实例。 初始化DIS客户端,加入一项参数bodySerializeType,如下所示: cli = disclient(endpoint='', ak=os.environ.get("HUAWEICLOUD_SDK_AK"), sk=os.environ.get("HUAWEICLOUD_SDK_SK"), projectid='', region='',bodySerializeType='protobuf')
-
公网环境下如何提高上传大文件速度?(Python SDK) 在公网环境下对于超过100MB的大文件建议通过分段上传方式上传。 分段上传是将单个对象拆分为一系列段分别上传。每个段都是对象数据的连续部分。您可以按照任意顺序上传段。如果其中某个段传输失败,可以重新传输该段且不会影响其他段。通过多线程并发上传同一对象的多个段,可大大提高传输效率。 具体代码样例可参见多段相关接口(Python SDK)。 父主题: 常见问题(Python SDK)
-
返回结果 表10 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表11 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无 表12 GetResult.body GetResult.body类型 说明 CopyObjectResponse 参数解释: 复制对象响应结果。 表13 CopyObjectResponse 参数名称 参数类型 描述 lastModified str 参数解释: 目标对象的最近一次修改时间(UTC时间)。 取值范围: UTC时间 默认取值: 无 etag str 参数解释: 目标对象的ETag值。对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或拷贝操作创建的对象,都有唯一的ETag。 约束限制: 当对象是服务端加密的对象时,ETag值不是对象的MD5值。 取值范围: 长度为32的字符串。 默认取值: 无 copySourceVersionId str 参数解释: 源对象的版本号。 取值范围: 长度为32的字符串。 默认取值: 无 versionId str 参数解释: 目标对象的版本号。 取值范围: 长度为32的字符串。 默认取值: 无 sseKms str 参数解释: 表示服务端加密是SSE-KMS方式。对象使用SSE-KMS方式加密。 取值范围: 可选值:kms,即选择SSE-KMS方式加密对象。 默认取值: 无 sseKmsKey str 参数解释: SSE-KMS加密方式下使用的KMS主密钥的ID值。 取值范围: 有效值支持两种格式: regionID:domainID(账号ID):key/key_id key_id 其中: regionID是使用密钥所属region的ID,可在地区和终端节点页面获取; domainID是使用密钥所属账号的账号ID,获取方法参见如何获取账号ID和用户ID?(Python SDK); key_id是从 数据加密 服务创建的密钥ID,获取方法请参见查看密钥。 默认取值: 如果用户没有提供该头域,那么默认的主密钥将会被使用。 如果默认主密钥不存在,将默认创建并使用。 sseC str 参数解释: 使用SSE-C方式加解密对象时,选择的加解密算法。 取值范围: 支持的值为AES256,即高级加密标准(Advanced Encryption Standard,AES)。 默认取值: 无 sseCKeyMd5 str 参数解释: SSE-C方式下加密使用密钥的MD5值,该值用于验证密钥传输过程中是否出错。 约束限制: 由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ== 默认取值: 无
-
接口约束 您必须是桶拥有者或拥有复制对象的权限,才能复制对象。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 复制对象操作的请求需要通过头域携带拷贝的源桶和对象信息,不能携带消息实体。 目标对象大小范围是[0, 5GB],如果源对象大小超过5GB,只能使用多段相关接口(Python SDK)功能拷贝部分对象。
-
代码样例 此用例用于生成带授权信息的临时URL。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 from obs import ObsClient import os import traceback import base64 # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取 # security_token = os.getenv("SecurityToken") # server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 server = "https://obs.cn-north-4.myhuaweicloud.com" # 创建obsClient实例 # 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值 obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) try: # 生成创建桶的带授权信息的URL res1 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', expires=3600) print('signedUrl:', res1.signedUrl) print('actualSignedRequestHeaders:', res1.actualSignedRequestHeaders) # 生成上传对象的带授权信息的URL res2 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', expires=3600, headers={'Content-Type': 'text/plain'}) print('signedUrl:', res2.signedUrl) print('actualSignedRequestHeaders:', res2.actualSignedRequestHeaders) # 生成设置对象ACL的带授权信息的URL res3 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', specialParam='acl', expires=3600, headers={'x-obs-acl': 'private'}) print('signedUrl:', res3.signedUrl) print('actualSignedRequestHeaders:', res3.actualSignedRequestHeaders) # 生成下载对象的带授权信息的URL res4 = obsClient.createSignedUrl(method='GET', bucketName='bucketname', objectKey='objectkey', expires=3600) print('signedUrl:', res4.signedUrl) print('actualSignedRequestHeaders:', res4.actualSignedRequestHeaders) # 生成删除对象的带授权信息的URL res5 = obsClient.createSignedUrl(method='DELETE', bucketName='bucketname', objectKey='objectkey', expires=3600) print('signedUrl:', res5.signedUrl) print('actualSignedRequestHeaders:', res5.actualSignedRequestHeaders) # 生成删除桶的带授权信息的URL res6 = obsClient.createSignedUrl(method='DELETE', bucketName='bucketname', expires=3600) print('signedUrl:', res6.signedUrl) print('actualSignedRequestHeaders:', res6.actualSignedRequestHeaders) # 生成设置初始化分段任务的带授权信息的URL res7 = obsClient.createSignedUrl(method='POST', bucketName='bucketname', objectKey='objectkey', specialParam='uploads', expires=3600) print('signedUrl:', res7.signedUrl) print('actualSignedRequestHeaders:', res7.actualSignedRequestHeaders) # 生成上传段的带授权信息的URL, res8 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', expires=3600, queryParams={'partNumber': '1', 'uploadId': '00000*****'}) print('signedUrl:', res8.signedUrl) print('actualSignedRequestHeaders:', res8.actualSignedRequestHeaders) # 生成合并段的带授权信息的URL res9 = obsClient.createSignedUrl(method='POST', bucketName='bucketname', objectKey='objectkey', expires=3600, queryParams={'uploadId': '00000*****'}) print('signedUrl:', res9.signedUrl) print('actualSignedRequestHeaders:', res9.actualSignedRequestHeaders) # 生成图片持久化处理的带授权信息的URL # 源对象所在的桶名 bucketName = 'originBucketName'; # 处理前的源对象名 objectKey = 'test.png'; # 处理后的对象名 targetObjectName ="save.png" # 处理后保存的桶名, 可选参数 targetBucketName ="saveBucketName" queryParams={} queryParams["x-image-process"]="image/resize,w_100" queryParams["x-image-save-object"]=base64.b64encode(targetObjectName .encode("utf-8")).decode() # 可选参数 queryParams["x-image-save-bucket"]=base64.b64encode(targetBucketName .encode("utf-8")).decode() res10 = obsClient.createSignedUrl(method='GET', bucketName=bucketName, objectKey=objectKey, queryParams=queryParams, expires=3600) print('signedUrl:', res10.signedUrl) print('actualSignedRequestHeaders:', res10.actualSignedRequestHeaders) except: print(traceback.format_exc())
-
接口约束 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
-
请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 method str 必选 参数解释: HTTP方法类型 取值范围: GET POST PUT DELETE HEAD 默认取值: 无 bucketName str 可选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey str 可选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 specialParam str 可选 参数解释: 特殊操作符,代表要操作的子资源, 取值范围: versions uploads location storageinfo quota storagePolicy acl append logging policy lifecycle website versioning cors notification tagging delete restore 默认取值: 无 expires int 可选 参数解释: 带授权信息的URL的过期时间。 取值范围: 大于等于0的整型数,单位:秒。 默认取值: 300秒 headers dict 可选 参数解释: 请求中携带的头域。 默认取值: 无 queryParams dict 可选 参数解释: 请求中携带的查询参数。 默认取值: 无 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
-
接口约束 您必须是桶拥有者或拥有判断桶是否存在的权限,才能判断桶是否存在。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:HeadBucket权限,如果使用桶策略则需授予HeadBucket权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
-
返回结果说明 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
-
安装可选 安装全部依赖项(2.1.0以前版本需手动安装langchain-openai,命令pip install langchain-openai): pip install pangu_kits_app_dev_py[all] cache相关依赖: pip install redis~=4.5.5 pip install gptcache~=0.1.37 pip install redis-om~=0.1.3 pip install pymysql~=1.1.0 pip install SQLAlchemy~=2.0.19
-
连接代码 SSL开启 import ssl import os from pymongo import MongoClient # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全 # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV rwuser = os.getenv('EXAMPLE_USERNAME_ENV') password = os.getenv('EXAMPLE_PASSWORD_ENV') conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin" connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file}) dbs = connection.database_names() print "connect database success! database names is %s" % dbs SSL关闭 import ssl import os from pymongo import MongoClient # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全 # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV rwuser = os.getenv('EXAMPLE_USERNAME_ENV') password = os.getenv('EXAMPLE_PASSWORD_ENV') conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin" connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000) dbs = connection.database_names() print "connect database success! database names is %s" % dbs
-
前提条件 连接数据库的弹性云服务器必须和GeminiDB Mongo实例之间网络互通,可以使用curl命令连接GeminiDB Mongo实例服务端的IP和端口号,测试网络连通性。 curl ip:port 返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。 在弹性云服务器上安装Python以及第三方安装包pymongo。推荐使用pymongo3.10版本。 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
-
响应参数 Python SDK响应结果为Json格式,详见表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 resp_type 是 String 参数值为RESULT,表示识别结果响应。 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程。 segments 是 Array of objects 多句结果。详见表5。 表5 Segment 参数名称 是否必选 参数类型 描述 start_time 是 Integer 一句的起始时间戳,单位为ms。 end_time 是 Integer 一句的结束时间戳,单位为ms。 is_final 是 Boolen true表示是最终结果, false表示为中间临时结果。 result 是 Object 调用成功表示识别结果,详见表6。 表6 Result 参数名称 是否必选 参数类型 描述 text 是 String 识别结果。 score 是 Float 识别结果的置信度(0-1之间)。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 word_info 否 Array of objects 分词信息列表。 表7 Word_info 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
-
代码示例 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 # -*- coding: utf-8 -*- from huaweicloud_sis.client.rasr_client import RasrClient from huaweicloud_sis.bean.rasr_request import RasrRequest from huaweicloud_sis.bean.callback import RasrCallBack from huaweicloud_sis.bean.sis_config import SisConfig import json import os # 鉴权参数 # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SIS_AK/HUAWEICLOUD_SIS_SK ak = os.getenv("HUAWEICLOUD_SIS_AK") # 从环境变量获取ak 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html assert ak is not None, "Please add ak in your develop environment" sk = os.getenv("HUAWEICLOUD_SIS_SK") # 从环境变量获取sk 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html assert sk is not None, "Please add sk in your develop environment" project_id = "" # project id 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html region = 'cn-north-4' # region,如cn-north-4 """ todo 请正确填写音频格式和模型属性字符串 1. 音频格式一定要相匹配. 例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit。 如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。 2. 音频采样率要与属性字符串的采样率要匹配。 例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model """ # 实时语音识别 参数 path = '' # 需要发送音频路径,如D:/test.pcm, 同时sdk也支持byte流发送数据。 audio_format = 'pcm16k16bit' # 音频支持格式,如pcm16k16bit,详见api文档 property = 'chinese_16k_general' # 属性字符串,language_sampleRate_domain, 如chinese_16k_general, 采样率要和音频一致。详见api文档 class MyCallback(RasrCallBack): """ 回调类,用户需要在对应方法中实现自己的逻辑,其中on_response必须重写 """ def on_open(self): """ websocket连接成功会回调此函数 """ print('websocket connect success') def on_start(self, message): """ websocket 开始识别回调此函数 :param message: 传入信息 :return: - """ print('webscoket start to recognize, %s' % message) def on_response(self, message): """ websockert返回响应结果会回调此函数 :param message: json格式 :return: - """ print(json.dumps(message, indent=2, ensure_ascii=False)) def on_end(self, message): """ websocket 结束识别回调此函数 :param message: 传入信息 :return: - """ print('websocket is ended, %s' % message) def on_close(self): """ websocket关闭会回调此函数 """ print('websocket is closed') def on_error(self, error): """ websocket出错回调此函数 :param error: 错误信息 :return: - """ print('websocket meets error, the error is %s' % error) def on_event(self, event): """ 出现事件的回调 :param event: 事件名称 :return: - """ print('receive event %s' % event) def rasr_example(): """ 实时 语音识别 demo """ # step1 初始化RasrClient, 暂不支持使用代理 my_callback = MyCallback() config = SisConfig() # 设置连接超时,默认是10 config.set_connect_timeout(10) # 设置读取超时, 默认是10 config.set_read_timeout(10) # 设置connect lost超时,一般在普通并发下,不需要设置此值。默认是10 config.set_connect_lost_timeout(10) # websocket暂时不支持使用代理 rasr_client = RasrClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback, config=config) try: # step2 构造请求 request = RasrRequest(audio_format, property) # 所有参数均可不设置,使用默认值 request.set_add_punc('yes') # 设置是否添加标点, yes or no, 默认no request.set_vad_head(10000) # 设置有效头部, [0, 60000], 默认10000 request.set_vad_tail(500) # 设置有效尾部,[0, 3000], 默认500 request.set_max_seconds(30) # 设置一句话最大长度,[1, 60], 默认30 request.set_interim_results('no') # 设置是否返回中间结果,yes or no,默认no request.set_digit_norm('no') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes # request.set_vocabulary_id('') # 设置热词表id,若不存在则不填写,否则会报错 request.set_need_word_info('no') # 设置是否需要word_info,yes or no, 默认no # step3 选择连接模式 # rasr_client.short_stream_connect(request) # 流式一句话模式 # rasr_client.sentence_stream_connect(request) # 实时语音识别单句模式 rasr_client.continue_stream_connect(request) # 实时语音识别连续模式 # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id'} # rasr_client.continue_stream_connect(request, headers) # step4 发送音频 rasr_client.send_start() # 连续模式下,可多次发送音频,发送格式为byte数组 with open(path, 'rb') as f: data = f.read() rasr_client.send_audio(data) # 可选byte_len和sleep_time参数,建议使用默认值 rasr_client.send_end() except Exception as e: print('rasr error', e) finally: # step5 关闭客户端,使用完毕后一定要关闭,否则服务端20s内没收到数据会报错并主动断开。 rasr_client.close() if __name__ == '__main__': rasr_example()
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格