pageviews: Affichage des requêtes effectuées
This commit is contained in:
parent
94af43e4a1
commit
200157b01d
|
@ -1,15 +1,38 @@
|
||||||
|
import logging
|
||||||
import requests
|
import requests
|
||||||
import urllib3
|
import urllib3
|
||||||
|
|
||||||
# Session de requêtage HTTP
|
# Session de requêtage HTTP
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
||||||
# Réalise 10 essais de récupération de chaque page, en augmentant
|
# Objet pour afficher le journal d’exécution
|
||||||
# progressivement le délai entre chaque essai
|
logger = logging.getLogger('fetch.http')
|
||||||
|
|
||||||
|
|
||||||
|
class LoggingAdapter(requests.adapters.HTTPAdapter):
|
||||||
|
"""
|
||||||
|
Adapteur de requêtes vérifiant le nombre d’accès réalisés par seconde.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
# Réessaie jusqu’à dix fois la récupération de chaque page, en
|
||||||
|
# augmentant progressivement le délai entre chaque essai
|
||||||
retry = urllib3.util.Retry(total=10, backoff_factor=0.3)
|
retry = urllib3.util.Retry(total=10, backoff_factor=0.3)
|
||||||
adapter = requests.adapters.HTTPAdapter(max_retries=retry)
|
super(LoggingAdapter, self).__init__(max_retries=retry)
|
||||||
session.mount('http', adapter)
|
|
||||||
session.mount('https', adapter)
|
def send(
|
||||||
|
self, request, stream=False, timeout=None, verify=True,
|
||||||
|
cert=None, proxies=None
|
||||||
|
):
|
||||||
|
logger.debug('{} {}'.format(request.method, request.url))
|
||||||
|
return super(LoggingAdapter, self).send(
|
||||||
|
request, stream=stream, timeout=timeout,
|
||||||
|
verify=verify, cert=cert, proxies=proxies
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
adapter = LoggingAdapter()
|
||||||
|
session.mount('http://', adapter)
|
||||||
|
session.mount('https://', adapter)
|
||||||
|
|
||||||
# Identification du robot
|
# Identification du robot
|
||||||
session.headers['User-Agent'] = (
|
session.headers['User-Agent'] = (
|
||||||
|
|
|
@ -28,12 +28,14 @@ def _year_date_distance(a, b):
|
||||||
"""
|
"""
|
||||||
Calcule la distance entre deux jours de l’année.
|
Calcule la distance entre deux jours de l’année.
|
||||||
|
|
||||||
:example: _year_date_distance(10, 360) == 15
|
|
||||||
:example: _year_date_distance(numpy.array([10, 182, 355]), 182)
|
|
||||||
== [172, 0, 173]
|
|
||||||
:param a: Première valeur (peut être un tableau numpy).
|
:param a: Première valeur (peut être un tableau numpy).
|
||||||
:param b: Seconde valeur (peut être un tableau numpy).
|
:param b: Seconde valeur (peut être un tableau numpy).
|
||||||
:return: Valeur de la distance.
|
:return: Valeur de la distance.
|
||||||
|
|
||||||
|
>>> _year_date_distance(10, 360)
|
||||||
|
15
|
||||||
|
>>> _year_date_distance(numpy.array([10, 182, 355]), 182)
|
||||||
|
[172, 0, 173]
|
||||||
"""
|
"""
|
||||||
return numpy.stack((
|
return numpy.stack((
|
||||||
numpy.mod(a - b, len(year_all_days)),
|
numpy.mod(a - b, len(year_all_days)),
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
import calendar
|
import calendar
|
||||||
import collections
|
import collections
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -8,7 +9,7 @@ from matplotlib import pyplot
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Objet pour afficher le journal d’exécution
|
# Objet pour afficher le journal d’exécution
|
||||||
logger = logging.getLogger('pageviews')
|
logger = logging.getLogger('plot_pageviews')
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
if len(sys.argv) < 4:
|
if len(sys.argv) < 4:
|
||||||
|
|
Loading…
Reference in New Issue