我通过以下方式在Airflow连接中保存Google云端硬盘令牌:
b'\x80\x03cgoogle.oauth2 ...
我有以下代码从连接中恢复令牌:
drive_conn = BaseHook.get_connection("drive_api")
token = drive_conn.password
我想以bytes
格式恢复此令牌,这是我的以下代码正常工作所必需的:
token = pickle.loads(token)
但是它存储为str
。
我可以将其恢复为bytes
吗?或如何转换为字节?还是有其他方法可以存储此令牌?也许之前转换为str
?
我尝试过:
token.decode()
但是我遇到以下错误:
UnicodeDecodeError:'utf-8'编解码器无法解码位置0:起始字节无效的字节0x80
答案 0 :(得分:1)
我本人立即对此进行了研究,对于AirFlow以二进制形式存储的令牌,您需要运行ast.literal_eval
首先将它们转换回本机类型。这应该为您工作:
drive_conn = BaseHook.get_connection("drive_api")
token = ast.literal_eval(drive_conn.password)
请记住,如果无法解析输入数据,这将引发异常。