几次成功运行后,Python函数不会返回值

时间:2019-06-07 06:07:12

标签: python-3.x pandas

我的功能有奇怪的问题。

当我调用函数_read_page时,它工作正常。 当我在下面的循环中运行代码时,它可以工作,但仅进行几次迭代,然后中断。 当我在“ while循环”中调用每一行时,它可以工作,但是经过几次迭代后,_read_page函数不会返回任何值,也不会将其分配给y。但这似乎很好,函数_read_page不返回任何错误。此后,下一步pd.concat返回有关NoneType对象的错误。

重要的是,当我再次使用相同的参数调用_read_page时,它会返回值并将值分配给y。

编辑: 它以命令fin = req.json()

结尾

你知道是什么问题吗?
可能是由于内存不足或类似原因引起的吗? 谢谢你,抱歉我的英语...

...
x_df = pd.DataFrame()
first_pass = True
y = {"total_count": 0}
continuous_count = 0
while first_pass or continuous_count < y["total_count"]: 
    first_pass = False
    y = _read_page(pods_url=pods_url,
                   auth=auth,
                   data=data)
    x_df = pd.concat([x_df,
                      y["data"]["Data"]], ignore_index=False)
    scroll_id = y["data"]["ScrollId"][0]
    data["ScrolledFilterRequest"].update({"ScrollId": scroll_id})
    continuous_count = continuous_count + page_size
...
def _read_page(pods_url, auth, data, dataframe=True):
try:
    url = pods_url + "api/v1/Catalog/NestScrollApi"
    req = requests.post(url=url, auth=auth, verify=False, json=data)
    if req.status_code != 200:
        df = pd.DataFrame()
        fin = {"TotalCount": 0}
    else:
        fin = req.json()
        df = pd.DataFrame(fin)
    return {"data": df,
            "total_count": fin["TotalCount"],
            "response": req.status_code}
except Exception as e:
    print(e)

1 个答案:

答案 0 :(得分:0)

最后,它是 MemoryError

fin = req.json()in json self.content.decode(encoding), **kwargs MemoryError行中有错误

解决方案是将32位版本的Python更改为64位版本的Python,并且可以正常工作,而无需更改代码。