2012-08-12 7 views
0

Ma tâche consiste à effectuer des requêtes périodiques au serveur et à écrire l'heure de cette requête dans la base de données. J'utilise Python 2.7.3, cURL et pycurl comme wrapper pour cURL. Je demande comme:Pycurl: comment déterminer la durée d'une requête

import pycurl 
c = pycurl.Curl() 
c.setopt(c.URL, "http://google.com/") 
c.setopt(c.VERBOSE, True) # to see request details 
c.perform() 

Mais comment puis-je déterminer l'heure de cette demande?

UPD1

Ok, je comprends, que je prends 2 et la diff horodatages entre eux sera la durée de la demande. Mais je fais face à un problème:

quand j'Execute:

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 

je reçois 0,0 o (parfois) 0,01. C'est diff, parce que j'exécute ces commandes en python shell et qu'il reste du temps après ts = time.clock() et avant print time.clock() - ts, donc le diff devrait être d'environ 3 sec.

Cette sortie se trouve sur mon serveur Ubuntu 12.04 installé sur Virtualbox. Virtualbox installé sur Windows 7. Lorsque j'essaie de code ci-dessous dans Windows 7, j'obtiens une sortie correcte.

Voici une autre question - peut-être que je devrais utiliser time.time() au lieu de time.clock()?

Solution

idée a été de this post. Succinctement, vous devriez utiliser time.clock() sur windows et time.time() sur Linux ou Unix (Ubuntu et autres, FreeBSD et autres, MacOS). Et vous pouvez également utiliser timeit.default_timer(). Cette fonction détecte le type d'os et choisit time.time() ou time.clock(). Ainsi, le code de la solution est:

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 
+1

duplication possible de [Mesure du temps écoulé en python] (http://stackoverflow.com/questions/7421641/measuring-elapsed-time-in-python) –

+0

Demandez-vous la _duration_ de la requête, l'heure locale la demande a commencé, le moment où le serveur distant l'a reçu, quelque chose d'autre ...? –

+0

prenez-vous à propos de Ping? –

Répondre

1
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

thx! mais voici un problème. J'ai OS primaire win7 et python 2.7.3 installé. J'ai également virtualbox avec le serveur d'Ubuntu 12.04 installé avec python 2.7.3. quand j'exécute time.clock() sur win7 j'obtiens de bonnes valeurs comme 14.2348885920, mais quand j'exécute time.clock() sur la machine virtuelle j'obtiens des valeurs comme 0.2, 0.4 et ainsi de suite (toutes <1). – dizpers

+0

Si j'utilise time.time() c'est ok. – dizpers

+0

Devrions-nous savoir ce que vous avez essayé jusqu'à présent? Si vous avez un problème plus spécifique, indiquez-le dans votre question au lieu de nous laisser deviner ce qui est clairement une chance d'être déprécié. –

0

ne pas utiliser time.clock() pour chronométrer les intervalles écoulés. C'est aussi maintenant obsolète.

Questions connexes