Beispiel #1
0
    def heartbeat(self, *args, **kwargs):
        """
        Handle the heartbeat of a RQ worker.

        This writes the heartbeat records to the :class:`pulpcore.app.models.Worker` records.

        Args:
            args (tuple): unused positional arguments
            kwargs (dict): unused keyword arguments
        """
        handle_worker_heartbeat(self.name)
        check_worker_processes()
        if self.is_resource_manager:
            check_and_cancel_missing_tasks()

        return super().heartbeat(*args, **kwargs)
Beispiel #2
0
    def __init__(self):
        self.shutdown_requested = False
        self.name = f"{os.getpid()}@{socket.getfqdn()}"
        self.heartbeat_period = settings.WORKER_TTL / 3
        self.cursor = connection.cursor()
        self.worker = handle_worker_heartbeat(self.name)

        # Add a file descriptor to trigger select on signals
        self.sentinel, sentinel_w = os.pipe()
        os.set_blocking(self.sentinel, False)
        os.set_blocking(sentinel_w, False)
        signal.set_wakeup_fd(sentinel_w)
Beispiel #3
0
 def beat(self):
     if self.worker.last_heartbeat < timezone.now() - timedelta(
             seconds=self.heartbeat_period):
         self.worker = handle_worker_heartbeat(self.name)
         if self.shutdown_requested:
             self.task_grace -= 1