我目前正在研究一個項目,該項目需要我從REST API在線提取數據,並將其轉儲到本地數據庫中以供進一步處理。Python Rest API調用速度
該API連接到在線開票平臺,我有點關心腳本的速度。
目前我的腳本打開一個連接,建立一個發票清單。對於每張發票,腳本會爲特定發票行打開一個連接,並將其轉儲到另一個列表中。
我正在閱讀一個包含9張發票和共15個invoicelines的帳戶。這需要我7.4秒才能找回。
任何人都可以幫我用我的代碼?也許我可以加快一點。
# -*- coding: utf-8 -*-
import requests
from datetime import datetime
token = "b877aff346ec0c7d238c21a6c33929c84b13a110"
def request(accessToken, url):
link = 'https://api.billysbilling.com/v2/' +str(url)
headers= {'X-Access-Token': accessToken}
data = requests.get(link, headers=headers).json()
return data
def invoiceLines(token):
inv = request(accessToken = token, url = "invoices")["invoices"]
idList = []
invoiceLinesList = []
lines = []
for r in inv:
if not r["id"] in idList:
idList.append(r["id"])
invoiceLinesList.append(request(accessToken = token,
url = str("invoiceLines?invoiceId=") +
str(r["id"]))["invoiceLines"])
for invoice in invoiceLinesList:
for line in invoice:
lines.append(line)
return [inv, lines]
start = datetime.now()
data = invoiceLines(token)
print "Time spent - " + str(datetime.now()-start)
print "Invoices - " + str(len(data[0]))
print "Invoice lines - " +str(len(data[1]))
感謝 亨裏克
數據從遠程服務器檢索需要多長時間?如果7秒總共需要6.8秒,那麼改進的選項就不多了。看看timeit http://dabeaz.blogspot.co.uk/2010/02/context-manager-for-timing-benchmarks.html –