def start()

in services/worker/src/worker/executor.py [0:0]


    def start(self) -> None:
        worker_loop_executor = self._create_worker_loop_executor()
        worker_loop_executor.start()  # blocking until the banner is printed
        self.executors.append(worker_loop_executor)

        web_app_executor = self._create_web_app_executor()
        web_app_executor.start()  # blocking until socket connection is established
        self.executors.append(web_app_executor)

        loop = asyncio.get_event_loop()
        loop.add_signal_handler(signal.SIGTERM, self.sigterm_stop)

        logging.info("Starting heartbeat.")
        loop.create_task(every(self.heartbeat, seconds=self.heartbeat_interval_seconds))
        loop.create_task(
            every(
                self.kill_zombies,
                seconds=(
                    self.kill_zombies_interval_seconds * 0.5,
                    self.kill_zombies_interval_seconds * 1.5,
                ),
            )
        )
        loop.create_task(
            every(
                self.kill_long_job,
                worker_loop_executor=worker_loop_executor,
                seconds=(
                    self.kill_long_job_interval_seconds * 0.5,
                    self.kill_long_job_interval_seconds * 1.5,
                ),
            )
        )
        loop.run_until_complete(
            every(self.is_worker_alive, worker_loop_executor=worker_loop_executor, seconds=1.0, stop_on=False)
        )
        logging.info("Executor loop finished.")