私の仕事は、サーバーへの定期的なリクエストを行い、このリクエストの時間をデータベースに書き込むことです。Python 2.7.3、cURL、および pycurl を cURL のラッパーとして使用します。私は次のように要求します:
import pycurl
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
c.perform()
しかし、このリクエストの時間をどのように判断できますか?
UPD1
了解しました。2 つのタイムスタンプを取得する必要があり、それらの差分がリクエストの期間になります。しかし、私はいくつかの問題に直面しています:
私が実行すると:
import pycurl, time
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
ts = time.clock()
c.perform()
print time.clock() - ts
私は 0.0 o (時々) 0.01 を取得します。ts = time.clock()
私はこのコマンドをPythonシェルで実行し、実行後と実行前に時間が残っているため、差分が間違っているprint time.clock() - ts
ため、差分は約3秒になるはずです。
この出力は、Virtualbox にインストールされた Ubuntu サーバー 12.04 で得られます。Windows 7にインストールされたVirtualbox。Windows 7で以下のコードを試すと、正しい出力が得られます。
ここで別の質問があります - おそらく、time.clock() の代わりに time.time() を使用する必要がありますか?
解決
アイデアはこの投稿から取られました。簡潔に言うと、Windows では time.clock() を、Linux または Unix (Ubuntu など、FreeBSD など、MacOS) では time.time() を使用する必要があります。また、timeit.default_timer() も使用できます。この関数は OS タイプを検出し、time.time() または time.clock() を選択します。したがって、ソリューションのコードは次のとおりです。
import pycurl, timeit
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
ts = timeit.default_timer()
c.perform()
print timeit.default_timer() - ts