2013-01-02 64 views
2

我AppEngine上的應用程序,它是基於從谷歌驅動器SDK樣本Python版本DrEdit的。**是否需要每用戶API發現(Google Drive SDK)?

雖然我還沒有真正做任何分析的是,我注意到,這似乎是建立Drive服務和用戶信息服務從頭開始處理每個請求。這看起來很浪費,因爲它涉及到一個http請求,然後以相對複雜的方式解析返回的JSON。

我已經簽了普通的例子在python google client library,看看它是否更有效地完成,但它看起來一樣的...

http = httplib2.Http() 
http = credentials.authorize(http) 
service = build('calendar', 'v3', http=http) 

難道做這種方式,因爲API發現是用戶特定的(我從來沒有見過這種情況),或者它只是一個懶惰的方式來獲得授權的http對象到服務對象?我是python和GAE的新手,所以我可能忽略了一些正在發生的巧妙的緩存,無論是http請求還是生成的對象,儘管我認爲這兩者都不太可能。

問題: 我正確地認爲這是浪費嗎?如果是這樣,是否有人知道大概有多少毫秒可能會浪費F1級GAE服務器上的每個請求?還有誰知道修改後的discovery.py模塊允許跨用戶重用服務。

**我已對該示例進行了合理的更改,包括切換到python 2.7以及使用聯機OAuth2以及僅存儲在memcache中的憑據。

編輯: 我剛剛安裝了appstats(不像我擔心的那麼複雜!)。似乎有關的http請求大約需要60-75ms。所以,如果你想做兩個Drive和一個UserInfo(他們是同步的) - 你每個請求浪費大約120-150ms。這似乎值得節省。

那麼如何在服務asynchronously上使用execute()命令,可以同時完成驅動,userinfo和memcache/datastore的請求。 (從邏輯上說,至少在我的應用中是可行的)。這是否需要(另一個)重寫discovery.py還是有更簡單的方法來使其工作?

回答