投稿

ラベル(python)が付いた投稿を表示しています

Uptime Robot API を使って監視設定を一括更新する

Uptime Robot という無料で 50サイトまで死活監視してくれるサービスについて、監視設定を一括更新するには以下のように API を使うと簡単にできます。 requests ライブラリを使用しているので事前に pip install requests が必要です。 import requests urlBase = 'https://api.uptimerobot.com' baseParams = { 'apiKey': 'u123123-ffffffffffffffffffffffffff', 'format': 'json', 'noJsonCallback': 1, } # alert contact id を取得します for alertcontact in requests.get(urlBase + '/getAlertContacts', params=baseParams).json()['alertcontacts']['alertcontact']: print alertcontact['id'] # 全監視設定を更新します for monitor in requests.get(urlBase + '/getMonitors', params=baseParams).json()['monitors']['monitor']: print monitor['id'], requests.get(urlBase + '/editMonitor', params=dict(baseParams, **{ 'monitorID': monitor['id'], 'monitorAlertContacts': '123-456', # ハイフン区切り 'monitorInterval': 5, })).json()...

StatusCake API を使って監視設定を一括更新する

StatusCake とは基本無料でサイト数の制限なく Web サイトの死活監視を行えるとても便利なサービスです。監視設定は管理画面より一つづつ設定を更新することは可能なのですが、複数の監視設定の変更を一度に行う一括更新機能は無いようなので、 StatusCake API を使って変更を行ってみました。 API Key はアカウント情報のページより取得できます。Username はログイン時のユーザー名を入力してください。以下のサンプルコードは Python で requests ライブラリ を使った場合の例です。動作させるには pip install requests を実行してライブラリを追加してみてください。 import requests urlBase = 'https://www.statuscake.com/API' authHeaders = {'API':'APIKEY', 'Username':'USERNAME'} # 各テストをすべて更新する例 for test in requests.get(urlBase + '/Tests', headers=authHeaders).json(): print test['TestID'], requests.put(urlBase + '/Tests/Update', headers=authHeaders, data={ 'TestID': test['TestID'], 'Confirmation': 3, 'TriggerRate': 1, 'CheckRate': 300, }).json() # テスト詳細の取得 requests.get(urlBase + '/Tests/Details', params={'TestID': 123123}, headers=authHeaders).json() # コンタクトグループ一覧を取得 requests....

[python] urllib.urlencode の引数を全て encode('utf-8') する

リスト内包表現と、 urllib.urlencode が2要素のタプルのシーケンスを受け入れることを利用しました。 #coding=utf-8 import urllib param = { 'name': u'なまえ', 'msg': u'こんにちは!' } urllib.urlencode([ (k, v.encode('utf-8')) for k, v in param.iteritems() ])

[gae] Google App Engine (Python) を始める人用 Tips

まず最初に読むべきところは、 スタートガイド (いわゆるチュートリアル) 開発用サーバーでは、ファイルをいじってもサーバーを再起動する必要はなし。デプロイのコマンドは、appcfg.py update DIR API リファレンスは英語版のみに情報がある場合あり Channel API , Receiving Email 実際に動くコードをもっと見たい人は、 Google特製のサンプルコード集 JSON を扱うときは同梱されている simplejson を使う。 import simplejson simplejson.dumps({'foo': u'あいう'}, ensure_ascii=False) 参考: After installing new SDK this : from django.utils import simplejson does work anymore DEBUG ログが出るようにする方法と、PrettyPrinter を使ってネストしたデータを見る。 import logging, pprint logging.getLogger().setLevel(logging.DEBUG) pp = pprint.PrettyPrinter() logging.debug(pp.pformat(['foo', {'bar': 'buzz'}])) path のキャプチャの方法 class FooHandler(webapp.RequestHandler): def get(self, id): # /foo/123 へのリクエストなら、id = '123' app = webapp.WSGIApplication([ ('/foo/([0-9]+)', FooHandler), # 欲しいところを括弧しとく ], debug=True) webapp.util.run_wsgi_app(app) Windows の App Engine Launcher を使っていていちいちコマンドプロンプトが出てウザい:python.exe じゃなくて、pythonw.exe を...

[python] datetime から unix epoch を得る

Python 2.5 で、datetime から、JavaScript で使いやすいミリ秒で表した UNIX 時刻を作る方法を考えてみました。 # coding=utf-8 import time, calendar, datetime, pprint def datetime_to_epoch_1(dt): return int(time.mktime(dt.timetuple())) * 1000 + int(dt.microsecond / 1e3) def datetime_to_epoch_1_utc(dt): return int(calendar.timegm(dt.timetuple())) * 1000 + int(dt.microsecond / 1e3) def datetime_to_epoch_2(dt): delta = dt - datetime.datetime.fromtimestamp(0) return delta.days * 86400000 + delta.seconds * 1000 + int(delta.microseconds / 1e3) def datetime_to_epoch_2_utc(dt): delta = dt - datetime.datetime.utcfromtimestamp(0) return delta.days * 86400000 + delta.seconds * 1000 + int(delta.microseconds / 1e3) pp = pprint.PrettyPrinter() now_local = datetime.datetime.now() now_utc = datetime.datetime.utcnow() pp.pprint([ datetime_to_epoch_1(now_local), datetime_to_epoch_2(now_local), datetime_to_epoch_1_utc(now_utc), datetime_to_epoch_2_utc(now_utc), time.time(), ]) # [131100373203...

[gae] 静的ファイルの配信でcharsetを指定するには

クラウド時代を実感させてくれる Google の素晴らしいサービス Google App Engine でアプリを作る際の設定について。 app.yaml で static_files を指定してファイルを配信する際に、レスポンスヘッダ Content-Type で charset を明示したい場合は、mime_type プロパティに 'text/html; charset=utf-8' という感じの値を入れると良いようです。 allow-any-origin.appspot.com で使っている app.yaml の断片: handlers: - url: / static_files: static/index.html mime_type: text/html; charset=utf-8 upload: static/index\.html