api功能函数 #
1 登陆函数: auth(mid,mkey,**kwargs)
注意:其它所有数据访问的函数都基于用户正常登陆的情况下才能使用
参数说明:
- mid: 平台用户申请的数据服务的账户名
- mkey: 对应用户名的验证密码
- no_use_thread_raise: 登陆成功后,数据线程(用户的权限数据线程)无法获取(例如,该账户下的权限线程总数同时占用,或者休眠时间很长,原来激活的线程过期)时是否直接抛出异常,True为抛出,False为不抛出,默认为值False
- dt_wait_seconds:>0的整数值,浮点数,在no_use_thread_raise 为False生效,尝试继续获取数据线程的间隔时间,在默认值3(s)
- dt_wait_nums: 整数值,在no_use_thread_raise 为False生效,尝试继续获取数据线程的次数, 默认值3(次),若取值<0则为一直尝试。
- 备注:1.用户每一次获得数据后数据线程都会自动增加20(s)的生命时长,如果下一次数据访问间隔时间超过这个时间,那么线程就会自动实效 2.用于客户端每在一个线程中使用api中的函数进行数据访问,都会衍生出一个权限数据线程。
调用示例
from zc_data import auth
#1登陆成功后遇到没有可用数据线程到的情况下,尝试3次重新获取数据线程,每次间隔3秒
auth(mid="user",mkey="password")
#2登陆成功后遇到没有可用数据线程到的情况下,尝试n次重新获取数据线程,每次间隔m秒
auth(mid="user",mkey="password",dt_wait_seconds=m,dt_wait_nums=n)
#3登陆成功后遇到没有可用数据线程到的情况下,一直尝试重新获取数据线程,每次间隔m秒
auth(mid="user",mkey="password",dt_wait_seconds=m,dt_wait_nums=-1)
#4 登陆成功后遇到没有可用数据线程到的情况下,直接抛出异常
auth(mid="user",mkey="password",no_use_thread_raise=Ture)
复制代码
2 运行时数据异常处理
以下表格为package目录下zc_data\error_codes.py中的枚举类ZCDataErrorCode中部分枚举值value解释
枚举值 | 含义 |
---|---|
api_change_error.value | aip被篡改,或者aip其它问题 |
data_fields_error.value | 数据func请求中,有fields可选的方法中,fields中填入了不支持的字段 |
data_func_not_acc.value | 用户没有访问某种数据服务的权限 |
data_target_query_failed.value | 数据访问没有查询到匹配的数据 |
data_not_exists.value | 数据查询不存在,同上等价 |
data_source_get_failed.value | 服务端数据源异常 |
data_query_num_zero.value | 用户当日的权限访问条数使用完 |
data_query_up_max_sys_define.value | 平台设定的单次访问数量超限,平台当前设置为10w条 |
args_define_error.value | 数据func请求中缺少了必要参数 |
args_not_support_type.value | 数据请求中参数的类型设置错误,例如本来要求的类型为list却给类dict |
args_not_support_value.value | 数据请求中此参数有效值错误,例如interval参数值为day写成了days等 |
- 以上数据请求过程中的各种异常,我们称之为运行时数据异常,这些异常是服务端的反馈的,用户自己本地导致的异常是不包含内的。
- 通过设置在zc_data\error_codes.py中DATA_RUNTIME_ERROR_RAISE_LIST,实现运行时数据异常处理,如果要忽略某种数据异常,用户可以将此列表中的上表中对应含义的枚举值注释掉,那么发生异常时将得到None
- 如果用户在自行处理异常,也就是让api抛出以上异常,以下提供示例:
from zc_data.api import func
from zc_data.error_codes import ZCDataErrorCode,DataError
#例1 假设func中定义的arg1只能是"ccc"或者"ddd",以下显然是会抛出参数有效值异常
try:
res = func(arg1="aaa")
except DataError as e:
if e.err_code == ZCDataErrorCode.args_not_support_value.value:
.....
#例2 假设数据访问的过程中当日数据权限条数使用完
try:
res = func(arg1="aaa")
except DataError as e:
if e.err_code == ZCDataErrorCode.data_query_num_zero.value:
.....
#例3 假设数据访问的过程中单次访问条数超过了平台的限定
try:
res = func(arg1="aaa")
except DataError as e:
if e.err_code == ZCDataErrorCode.data_query_up_max_sys_define.value:
.....
复制代码
3 获取当日数据量的使用情况: res = query_num_info()
参数说明:
- 无参函数
数据字段说明
字段名 | 中文名 | 解释或备注 |
---|---|---|
day_total_num | 查询总数 | 用户权限下的每日查询最大数量 |
left_num | 剩余数 | 当日可查询剩余数量 |
调用示例
from zc_data import auth
from zc_data.api import query_num_info
from datetime import date
auth("user","password")
info = query_num_info()
复制代码
返回:
info:
{"day_total_num":2000000.0,"left_num":1255855.0}
复制代码