我有一个for循环,它对数千行执行API调用。你知道吗
(我知道不建议使用for循环,但是这个api有速率限制,所以慢一点更好。我知道我也可以做iterrows
,但这只是一个例子)
有时我回来发现循环失败了,或者api出了问题,我需要停止循环。这意味着我丢失了所有的数据。你知道吗
我在考虑在每个循环结束时对数据帧进行酸洗,并在开始时重新加载它。这将保存对数据帧的所有更新。你知道吗
假例子(不是工作代码-这只是一个'what if'
):
for i in range(len(df1)):
# check if df pickle file in directory
if pickle in directory:
# load file
df1 = pickle.load(df1)
# append new data
df1.loc[i,'api_result'] = requests(http/api/call/data/)
# dump it to file
pickle.dump(df1)
else:
# start of loop
# append new data
df1.loc[i,'api_result'] = requests(http/api/call/data/)
# dump to file
pickle.dump(df1)
如果这不是保存更新文件以防失败或提前停止的好方法,那是什么?你知道吗
我认为一个好的解决方案是将所有的更新都保存在一个文件中
如果文件中存在所有行,则可以进行批量更新。如果没有,则从上次失败的记录重新启动更新
相关问题 更多 >
编程相关推荐