Ok, descobri o problema. Foi por causa do tempo limite do trabalhador.
try:
--my code goes here--
except Exception, ex:
self.error += 1
with open("error.txt", "a") as myfile:
myfile.write('\n%s' % sys.exc_info()[0] + "{}".format(self.url))
pass
Então, de acordo com meu código, o próximo domínio é retirado da fila se 200 url(s) forem buscados de cada domínio. Mas, para alguns domínios, havia um número insuficiente de urls para que a condição fosse encerrada (como apenas 1 ou 2 urls).
Como o código captura todas as exceções e anexa a
error.txt
Arquivo. Mesmo a exceção de tempo limite rq rq.timeouts.JobTimeoutException
foi capturado e anexado ao arquivo. Assim fazendo com que o trabalhador espere por x
tempo, o que leva à demissão do trabalhador.