Register Guidelines E-Books Search Today's Posts Mark Forums Read

Go Back   MobileRead Forums > Non-English Discussions > Forum Français > Software

Notices

Reply
 
Thread Tools Search this Thread
Old 05-26-2023, 05:19 AM   #61
lrpirlet
Connoisseur
lrpirlet began at the beginning.
 
Posts: 70
Karma: 40
Join Date: Mar 2020
Location: Belgium (sorry, I am from the Walloon side of the country and I speak french only)
Device: PW3, Kobo Libra H2O
Quote:
Originally Posted by lktr45 View Post
Malgré mes précautions ( recherche sur 10 livres max), j'ai été banni hier lors de mes tests. ll m'a semblé qu'avant cela, un bannissement momentané se produisait. J'ai vu que Kovid te proposait d'utiliser rate_limit(). A priori pas totalement convaincant si j'en crois ton dernier message.
Ici, on propose d'examiner l'en-tête renvoyée par le serveur pour gérer le problème mais j'avoue que cela dépasse mes compétences.
Hello lktr45
Merci pour ton retour...

Le plus longtemps que j'ai été banni, c'est de l'ordre de 2 semaines (je n'ai pas essayé tous les jours )... Donc, garde espoir.

En fait, je ne comprends pas comment ils mesurent les accès. Il me semble que leur algorithme prend en compte tant le nombre d'accès que le temps entre chaque accès. Je présume que l'intention est de limiter l'accès au seuls "humains" pour rejeter les "accès type robot"...
En tous les cas, le but semble être d'eviter une saturation du serveur Babelio, et c'est tout à fait normal...

Je n'ai pas vu que leur site proposait une limitation par un fichier "robot" et donc j'ai imaginé de laisser, au moins, un temps de plus d'une seconde entre chaque accès (1.2 sec. en fait).

J'ai établi cela avec ce décorateur que je place sur la routine de lecture de la page:
Code:
class Un_par_un(object):
    '''
    This is a class decorator, cause I am too lazy rewrite that plugin... :),
    beside I want to learn creating one. Well, granted, dedicated to ret_soup()

    Purpose: execute the decorated function with a minimum of x seconds
    between each execution, and collect all access time information...

    rate_limit() from calibre.ebooks.metadata.sources.search_engines provides the delay
    using a locked file containing the access time... maintenance of this resource
    is hidden in a context manager implementation.

    @contextmanager
    def rate_limit(name='test', time_between_visits=2, max_wait_seconds=5 * 60, sleep_time=0.2):

    I assume that calibre will wait long enough for babelio plugin (I pushed to 45 sec after first match)
    '''
    def __init__(self,fnctn):
        self.function = fnctn
        self._memory = []

    def __call__(self, *args, **kwargs):
      # who is calling
        who = "[__init__]"
        for key,value in kwargs.items():
            if "who" in key: who = value
        with rate_limit(name='Babelio_db', time_between_visits=TIME_INTERVAL):
          # call decorated function: "ret_soup" whose result is (soup,url)
            result = self.function(*args, **kwargs)
            self._memory.append((result[1], time.asctime(), who))
            return result

    def get_memory(self):
        mmry = self._memory
        self._memory = []
        return mmry
Le truc c'est que une classe en python retient des informations d'une invocation à l'autre et donc est capable de ne permettre un accès qu'après un certain temps.

Avec ce setup, je ne fais pas jeter si j'accède le site avec une série de requête de quelque 10 titres à la fois... Je ne fais jamais aucune requête de de centaine de titres qu'en cours de test, et j'évite de répéter un test... Je veux respecter Babelio et ses règles (trop implicites malheureusement).

Je suppose que si tu exposes le nombre d'accès pour les 10 titres et le temps entre chaque accès, tu pourrais voir que un op de Babelio aurait des raisons de te suspendre... (c'est la raison de get_memory dans mon décorateur.)

Le pluggin réagis sur une réponse http de valeur "500". Je pourrais voir si j'ai un retour = "429", mais je n'en ai jamais eu aucune trace dans mes logs... As-tu un log qui montre cette réponse http de valeur 429? je serais intéressé par un log qui le met en evidence...

Last edited by lrpirlet; 05-26-2023 at 05:27 AM. Reason: parti trop tôt
lrpirlet is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Must Have Tools Extensions? elbarto0 Kindle Developer's Corner 3 10-03-2016 04:57 PM
extensions.cfg who can explain it Skeeve PocketBook 2 02-20-2015 12:57 AM
links and extensions Iain ePub 3 10-13-2010 12:46 AM
Same book name, different extensions Ununoctien Bookeen 3 12-13-2007 07:19 AM
Firefox Extensions Best Of TadW Lounge 9 12-17-2004 01:58 PM


All times are GMT -4. The time now is 10:28 AM.


MobileRead.com is a privately owned, operated and funded community.