amélioration du programme en cas de nécessité de reprise du programme

This commit is contained in:
beren
2025-05-24 10:34:04 +00:00
parent 9b3979ab7f
commit a86002c924
3 changed files with 696 additions and 430 deletions

40
api.py
View File

@ -3,7 +3,33 @@ import base64
import requests
import ssl
from requests.adapters import HTTPAdapter
import logging
import os
from logging.handlers import TimedRotatingFileHandler
log_directory = "logs"
# 🔧 Configuration du handler avec rotation quotidienne
log_file = os.path.join(log_directory, "woocommerce.log")
handler = TimedRotatingFileHandler(
filename=log_file,
when="midnight", # ⏰ Rotation tous les jours à minuit
interval=1, # 📅 Chaque 1 jour
backupCount=7, # ♻️ Garde les 7 derniers fichiers de log
encoding='utf-8' # 🧾 Pour supporter tous les caractères
)
# 📋 Format du log
formatter = logging.Formatter(
fmt="%(asctime)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
handler.setFormatter(formatter)
# 🔌 Récupère le logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG) # 👁 Niveau minimum à capturer
logger.addHandler(handler)
class WoocommerceApiClient(API):
def __init__(self, url, wc_consumer_key, wc_consumer_secret, wp_application_user, wp_application_password, verify_ssl=False, **kwargs):
@ -59,8 +85,8 @@ class WoocommerceApiClient(API):
try:
if self._is_wc_api(endpoint):
kwargs.update(self._get_requests_general_kwargs(endpoint))
print(kwargs) # ✅ Montre tout le dict
print(kwargs["headers"]) # ✅ Si tu veux un champ en particulier
#print(kwargs) # ✅ Montre tout le dict
#print(kwargs["headers"]) # ✅ Si tu veux un champ en particulier
return requests.get(**kwargs)
else:
return super().get(endpoint, **kwargs)
@ -83,7 +109,7 @@ class WoocommerceApiClient(API):
kwargs['files'] = files
if data:
kwargs['json'] = data
print("kwargs envoyés à requests.post:", kwargs)
#print("kwargs envoyés à requests.post:", kwargs)
response = requests.post(**kwargs)
elif self._is_wp_api(endpoint):
kwargs.update(self._get_requests_general_kwargs(endpoint))
@ -91,10 +117,14 @@ class WoocommerceApiClient(API):
response = requests.post(**kwargs)
else:
response = super().post(endpoint, data, **kwargs)
if response and response.status_code not in (500, 400):
return response
if response.status_code not in (500, ) or retry >= self.max_retry:
return response
else:
retry += 1
logger.debug(f"status_code={response.status_code} - retry #{retry}")
except requests.exceptions.ConnectionError:
if retry < self.max_retry:
logger.debug(f"got requests.exceptions.ConnectionError - retry #{retry}")
print(".", end="")
retry += 1
else: raise