Redis
 sql >> Datenbank >  >> NoSQL >> Redis

python-rq Worker wird automatisch geschlossen

Okay, ich habe das Problem herausgefunden. Es lag an einer Worker-Zeitüberschreitung.

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

Gemäß meinem Code wird die nächste Domain aus der Warteschlange entfernt, wenn 200 URLs von jeder Domain abgerufen werden. Aber für einige Domains gab es nicht genügend URLs, um die Bedingung zu beenden (z. B. nur 1 oder 2 URLs).

Da der Code alle Ausnahmen abfängt und an error.txt anhängt Datei. Sogar die rq-Timeout-Ausnahme rq.timeouts.JobTimeoutException wurde abgefangen und an die Akte angehängt. Dadurch wird der Worker veranlasst, auf x zu warten Zeitdauer, die zur Kündigung des Arbeitnehmers führt.