Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何访问ECB数据流?TooManyRedirects:超过30个重定向_Python_Pandas_Python Requests_Sdmx - Fatal编程技术网

Python 如何访问ECB数据流?TooManyRedirects:超过30个重定向

Python 如何访问ECB数据流?TooManyRedirects:超过30个重定向,python,pandas,python-requests,sdmx,Python,Pandas,Python Requests,Sdmx,我正在使用请求包表单pandasdmx库访问欧洲央行的一些汇率。我试图遵循以下演练中突出显示的步骤:但是当我尝试访问不同的数据流时,它给了我一个错误。这是我正在使用的代码: import pandasdmx as sdmx ecb = sdmx.Request('ECB') ecb_via_proxy = sdmx.Request('ECB',proxies={'http': 'http://1.2.3.4:5678'}) flow_msg = ecb.dataflow() flow_msg

我正在使用请求包表单pandasdmx库访问欧洲央行的一些汇率。我试图遵循以下演练中突出显示的步骤:但是当我尝试访问不同的数据流时,它给了我一个错误。这是我正在使用的代码:

import pandasdmx as sdmx
ecb = sdmx.Request('ECB')
ecb_via_proxy = sdmx.Request('ECB',proxies={'http': 'http://1.2.3.4:5678'})
flow_msg = ecb.dataflow()


flow_msg = ecb.dataflow()
Traceback (most recent call last):

  File "<ipython-input-8-9011799aab2e>", line 1, in <module>
    flow_msg = ecb.dataflow()

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\pandasdmx\api.py", line 361, in get
    base_url, params=params, headers=headers, fromfile=fromfile)

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\pandasdmx\remote.py", line 98, in get
    url, params=params, headers=headers)

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\pandasdmx\remote.py", line 118, in request
    with closing(requests.get(url, params=params, **cur_config)) as response:

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py", line 76, in get
    return request('get', url, params=params, **kwargs)

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py", line 665, in send
    history = [resp for resp in gen] if allow_redirects else []

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py", line 665, in <listcomp>
    history = [resp for resp in gen] if allow_redirects else []

  File "C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py", line 166, in resolve_redirects
    raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)

TooManyRedirects: Exceeded 30 redirects.
将pandasdmx导入为sdmx
ecb=sdmx.Request('ecb')
ecb_via_proxy=sdmx.Request('ecb',proxy={'http':'http://1.2.3.4:5678'})
flow_msg=ecb.dataflow()
flow_msg=ecb.dataflow()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
flow_msg=ecb.dataflow()
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\pandasdmx\api.py”,第361行,在get中
基本url,params=params,headers=headers,fromfile=fromfile)
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\pandasdmx\remote.py”,第98行,在get中
url,params=params,headers=headers)
请求中第118行的文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\pandasdmx\remote.py”
以关闭(requests.get(url,params=params,**cur_config))作为响应:
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\api.py”,第76行,在get中
返回请求('get',url,params=params,**kwargs)
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\api.py”,请求中的第61行
return session.request(method=method,url=url,**kwargs)
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\sessions.py”,请求中第530行
resp=自我发送(准备,**发送)
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\sessions.py”,第665行,在send中
历史记录=[resp for resp in gen]如果允许,则重定向else[]
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\sessions.py”,第665行,在
历史记录=[resp for resp in gen]如果允许,则重定向else[]
文件“C:\Users\gcperez\AppData\Local\Continuum\anaconda3\lib\site packages\requests\sessions.py”,在resolve\u重定向中的第166行
raise TooManyRedirects('超过{}个重定向。'.format(self.max_重定向),response=resp)
TooManyRedirects:超过30个重定向。

我以前曾多次使用这种访问方式,但没有出现任何问题。?有人知道会发生什么吗?

欧洲央行更改了其web服务URL,而您拥有的
pandaSDMX
版本没有当前URL。我建议使用7个月前解决此问题的软件包():

$pip安装sdmx1
导入sdmx
ECB=sdmx.Client(“ECB”)
flow_msg=ECB.dataflow()
打印(报告(流量信息))
给出:

<sdmx.StructureMessage>                       
  <Header>                                                                                        
    id: 'IREF508443'                                                                              
    prepared: '2021-03-04T09:40:40+00:00'
    receiver: <Agency not_supplied>
    sender: <Agency Unknown>
    source: 
    test: False
  response: <Response [200]>
  DataflowDefinition (71): AME BKN BLS BNT BOP BSI BSP CBD CBD2 CCP CIS...
  DataStructureDefinition (55): ECB_AME1 ECB_BKN1 ECB_BLS1 ECB_BOP_BNT ...

id:'IREF508443'
准备:“2021-03-04T09:40:40+00:00”
接收人:
发件人:
资料来源:
测试:错误
答复:
数据流定义(71):AME BKN BLS BNT BOP BSI BSP CBD CBD2 CCP CI。。。
数据结构定义(55):欧洲央行AME1欧洲央行BKN1欧洲央行BLS1欧洲央行BOP BNT。。。