Apache-ranger python library JSONDecoder error



所以我试图使用ranger python客户端创建一个策略,这是我的代码(出于安全目的,经过编辑的机密信息(

from apache_ranger.model.ranger_service import *
from apache_ranger.client.ranger_client import *
from apache_ranger.model.ranger_policy  import *

ranger_url  = 'http://************.com:***'
ranger_auth = ('**********', '**********')
ranger = RangerClient(ranger_url, ranger_auth)
policy           = RangerPolicy()
policy.service   = 'starburst-enterprise'
policy.name      = 'test_policy'
policy.resources = { 'database': RangerPolicyResource({ 'values': ['hive'] }),
'table':    RangerPolicyResource({ 'values': ['uber_rides'] }),
'column':   RangerPolicyResource({ 'values': ['*'] }) }
allowItem1          = RangerPolicyItem()
allowItem1.groups   = [ 'Data Product Owner' ]
allowItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'select' }) ]
denyItem1          = RangerPolicyItem()
denyItem1.groups    = [ 'Data Product Owner' ]
denyItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'drop' }) ]
policy.policyItems     = [ allowItem1 ]
policy.denyPolicyItems = [ denyItem1 ]
print('Creating policy: name=' + policy.name)
created_policy = ranger.create_policy(policy)
print('    created policy: name=' + created_policy.name + ', id=' + str(created_policy.id))

但我收到了这个错误,当我试图调试它时,我发现它出现异常的原因是ranger_client.py中的http.post方法返回了一个响应(<response[400]>(,该响应不由任何if或elifs块处理,因此它转到else块并进入RaiseServiceException((,当我深入挖掘时,我在函数中发现了一些注释,这些注释给出了JSONDecoder错误,它说只有当JSON输入无效或未安装simplejson时才会引发异常。

Traceback (most recent call last):
File "c:Usersj.shimoga.prakashDesktoppls work - Copytest.py", line 37, in <module>
created_policy = ranger.create_policy(policy)
File "C:Usersj.shimoga.prakashDesktoppls work - Copyvenvlibsite-packagesapache_rangerclientranger_client.py", line 124, in create_policy
resp = self.__call_api(RangerClient.CREATE_POLICY, params, policy)
File "C:Usersj.shimoga.prakashDesktoppls work - Copyvenvlibsite-packagesapache_rangerclientranger_client.py",  
File "C:Usersj.shimoga.prakashDesktoppls work - Copyvenvlibsite-packagessimplejsondecoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

解决了这个问题,我只需要在ranger_url中传递"https"而不是"http">

最新更新