Lokal_Profil added a comment.

As a work around:

import time
from pywikibot import config as pwb_config

batch_size = 30
rate_limit = 65  # default limit is 30 edits per 60 seconds
max_timeout = 300

# bump timeout
old_timeout = pwb_config.socket_timeout
pwb_config.socket_timeout = max_timeout

while True:
    batch = pages[:batch_size]
    pages = pages[batch_size:]
    pre_timepoint = time.time()
    result = self.site.purgepages(batch, **requestparams)

    if pages:
        duration = time.time()-pre_timepoint
         time.sleep(max(0, (rate_limit-duration)))
    else:
        break

Where pages are the pages you wish to purge and requestparams are any params (such as forcelinkupdate) which you might want to pass on to site.purgepages().

Even this still triggers the rate limit on rare occasions but overall was quite stable.


TASK DETAIL
https://phabricator.wikimedia.org/T152597

EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Lokal_Profil
Cc: Aklapper, Lokal_Profil, pywikibot-bugs-list, Magul, Tbscho, MayS, Mdupont, JJMC89, jayvdb, Dalba, Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs

Reply via email to