Omaxlag pode ser adicionado a qualquer consulta daAction API. Quando definido, a consulta da API perguntará ao servidor se ele está muito ocupado.If it is, the API query will return an error instead of processing the API request.The error message will include the number of seconds behind it is, and this information can be used to determine how long to wait before retrying the query.The idea is to pause bot operations during times of high server load, to give human operations priority.This is an optional but recommended parameter, and many major bot frameworks such asPywikibot implement it by default.
Se o MediaWiki está sendo executado em umcluster de bancos de dados replicados (como o é na Wikimedia), isso significa que um alto tráfego de operações (especialmente edições) pode causarlag nos servidores replicados.Uma forma de mitigar olag nas réplicas é fazer com que todos os robôs e tarefas de manutenção parem automaticamente assim que olag for superior a determinado valor.O parâmetromaxlag foi introduzido no MediaWiki 1.10, permitindo que isso seja feito emscripts executados noclient-side.Desde a 1.27, ele se aplica somente a requisições àapi.php.
O parâmetromaxlag pode ser passado àapi.php através de um parâmetro na URL ou dos dados no POST. Seu conteúdo são os números de segundos tipados como inteiro.A título de exemplo,esta ligação retornará os metadados da página “MediaWiki” enquanto olag for menor do que 1 segundo. Jáesta outra (com um-1 no final) mostrará olag sem os metadados.
Se olag especificado for excedido durante a requisição, a API retornará um erro (com o código 200 conformeT33156) como o seguinte:
{"error":{"code":"maxlag","info":"Waiting for$host:$lag seconds lagged","host":$host,"lag":$lag,"*":"See https://www.mediawiki.org/w/api.php for API usage"}}
Os seguintes cabeçalhos HTTP são definidos:
O uso recomendado para aswikis da Wikimedia é o seguinte:
maxlag=5 (5 segundos). Esse é um valor não agressivo adequado, definido como valor padrão noPywikibot. Valores mais altos significam comportamento mais agressivo, valores mais baixos são mais agradáveis.maxlag. As tarefas não interativas devem sempre utilizá-lo. Veja tambémAPI:Etiqueta#O parâmetro maxlag.Observe que a camada decache (Varnish ouSquid) também pode gerar mensagens de erro com um código 503, devido ao tempo limite de um servidor a montante (upstream).Os clientes devem tratar esses erros de forma diferente, pois eles podem ocorrer de forma consistente ao tentar executar uma operação custosa e de longa duração.Repetir a operação no tempo limite usaria recursos excessivos do servidor e poderia deixar seu cliente em umloop infinito.É possível distinguir entre erros de camada decache e condições delag do MediaWiki usando um dos seguintes procedimentos:
X-Database-Lag é distinto dos erros delag de replicação no MediaWikiRetry-After nos erros do VarnishX-Squid-Error deve estar presente nos erros do Squid/Waiting for [^ ]*: [0-9.-]+ seconds? lagged/Para fins de teste, você pode intencionalmente fazer com que osoftware recuse uma requisição passando um valor negativo, como no URL a seguir://www.mediawiki.org/w/api.php?action=query&titles=MediaWiki&format=json&maxlag=-1.