throttle — Slow Down Wiki I/O#

Mechanics to slow down wiki read and/or write rate.

class throttle.ProcEntry(module_id, pid, time, site)#

Bases: tuple

Create new instance of ProcEntry(module_id, pid, time, site)

property module_id#

Alias for field number 0

property pid#

Alias for field number 1

property site#

Alias for field number 3

property time#

Alias for field number 2

class throttle.Throttle(site, *, mindelay=None, maxdelay=None, writedelay=None)[source]#

Bases: object

Control rate of access to wiki server.

Calling this object blocks the calling thread until at least 'delay' seconds have passed since the previous call.

Each Site initiates one Throttle object (site.throttle) to control the rate of access.

  • site (Union[, str]) – site or sitename for this Throttle. If site is an empty string, it will not be written to the throttle.ctrl file.

  • mindelay (Optional[int]) – The minimal delay, also used for read access

  • maxdelay (Optional[int]) – The maximal delay

  • writedelay (Optional[Union[int, float]]) – The write delay


Count running processes for site and set process_multiplicity.

Changed in version 7.0: process is not written to throttle.ctrl file is site is empty

Return type:



Remove me from the list of running bot processes.

Return type:



Return the actual delay, accounting for multiple processes.

This value is the maximum wait between reads/writes, not taking into account of how much time has elapsed since the last access.


write (bool) –


Get the global pid if the module is running multiple times.


module (str) –

Return type:



Seize the throttle lock due to server lag.

Usually the self.retry-after value from response_header of the last request if available which will be used for wait time. Otherwise lagtime from api maxlag is used. If neither self.retry_after nor lagtime is set, fallback to config.retry_wait.

If the lagtime is disproportionately high compared to self.retry_after value, the wait time will be increased.

This method is used by api.request. It will prevent any thread from accessing this site.


lagtime (Optional[float]) – The time to wait for the next request which is the last maxlag time from api warning. This is only used as a fallback if self.retry_after isn’t set.

Return type:


property multiplydelay: bool#


DEPRECATED attribute.

setDelays(delay=None, writedelay=None, absolute=False)[source]#

Set the nominal delays in seconds. Defaults to config values.


absolute (bool) –

Return type:


static wait(seconds)[source]#

Wait for seconds seconds.

Announce the delay if it exceeds a preset limit.


seconds (Union[int, float]) –

Return type:



Return waiting time in seconds.

The result is for a query that would be made right now.


write (bool) –