Google AppengineのAPIクオータを確認するためのPythonスクリプトを書きました
appengine sdkを探してもそういうモジュールを見つけられなかったので、mechanizeとBeautifulSoupを使ってAPIの状態を確認するスクリプトを書きました。
これでAPIクオータ監視ができるようになりました。以下、ソースコード。
#! /usr/bin/python2.7 # coding: utf-8 # monitor appengine api status from 'Quota Details' page on your appengine dashboard. import urllib import mechanize from BeautifulSoup import BeautifulSoup def setup_browser(): b = mechanize.Browser() b.set_handle_equiv(True) #b.set_handle_gzip(True) b.set_handle_redirect(True) b.set_handle_referer(True) b.set_handle_robots(False) b.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] return b def parse_response(fp): status = {} soup = BeautifulSoup(fp) a = soup.findAll('table', {'class': 'ae-table ae-table-striped '})[0] for tr in a.findAll('tbody')[0].findAll('tr'): tds = tr.findAll('td') topic = tds[0].text usage = tds[2].text count = tds[3].text.replace('\n', '') stat = tds[4].text status[topic] = (usage, count, stat) return status def analyze_api_status(url, email, passwd): # setup browser = setup_browser() # login browser.open(url) browser.select_form(nr=0) browser.form['Email'] = email browser.form['Passwd'] = passwd browser.submit() # parse status = parse_response(browser.response()) return status # url like https://appengine.google.com/dashboard/quotadetails?&app_id=<appid>&version_id=<vid> url = '' # account email = '<account email>' passwd = '<account pasword>' status = analyze_api_status(url, email, passwd) for k in status: print k,status[k] """sample output: Datastore Entity Delete Ops (u'', u'0', u'Okay') Number of Indexes (u'11%', u'22of 200', u'Okay') Blobstore API Calls (u'', u'0', u'Okay') Datastore Write Operations (u'100%', u'0.05of 0.05Million Ops', u'Limited') Datastore Queries (u'', u'0', u'Okay') Datastore Small Operations (u'0%', u'0.00of 0.05Million Ops', u'Okay') Datastore Entity Put Ops (u'', u'800', u'Okay') Datastore Stored Data (u'44%', u'0.44of 1.00GBytes', u'Okay') Blobstore Stored Data (u'0%', u'0.00of 5.00GBytes', u'Okay') Datastore Index Write Ops (u'', u'50,136', u'Okay') Data Sent to Datastore API (u'', u'0.00GBytes', u'Okay') Datastore Entity Fetch Ops (u'', u'4,406', u'Okay') Code and Static File Storage (u'0%', u'0.00of 1.00GBytes', u'Okay') Datastore Query Ops (u'', u'270', u'Okay') Datastore Id Allocation Ops (u'', u'0', u'Okay') Prospective Search Subscriptions (u'0%', u'0of 10,000', u'Okay') Datastore Read Operations (u'9%', u'0.00of 0.05Million Ops', u'Okay') Datastore API Calls (u'', u'350', u'Okay') Data Received from Datastore API (u'', u'0.00GBytes', u'Okay') Datastore Key Fetch Ops (u'', u'0', u'Okay') """