diff --git a/mwclient/client.py b/mwclient/client.py index 55278b5cf122d02acf061e8930268e4b5f5d533c..b6ccc6fa8a4ae1bd9fa340535037665fd87eb511 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -268,9 +268,15 @@ class Site(object): self.conn.cookies[self.host].update(cookies) if self.credentials: - login = self.api('login', lgname = self.credentials[0], lgpassword = self.credentials[1]) - if login['login']['result'] != 'Success': - raise errors.LoginError(self, login['login']) + wait_token = self.wait_token() + while True: + login = self.api('login', lgname = self.credentials[0], lgpassword = self.credentials[1]) + if login['login']['result'] == 'Success': + break + elif login['login']['result'] == 'Throttled': + self.wait(wait_token, login['login']['wait']) + else: + raise errors.LoginError(self, login['login']) if self.initialized: info = self.api('query', meta = 'userinfo', uiprop = 'groups|rights')