예제 #1
0
 def _wait_for_result(self, task, callback, timeout=CODE_EXECUTE_TIMEOUT):
     if timeout == 0:
         # celery y deadlock me?!?
         task.revoke()
         callback(TimeLimitExceeded())
     elif not task.ready():
         wait = 0.5
         IOLoop.instance().add_timeout(time.time() + wait,
               lambda: self._wait_for_result(task, callback, timeout - wait))
     else:
         result = task.result
         callback(result)
예제 #2
0
파일: job.py 프로젝트: jokar/minion
    def on_timeout(self, soft):
        state.task_ready(self)
        if soft:
            self.logger.warning("Soft time limit exceeded for %s[%s]" % (
                self.task_name, self.task_id))
            exc = SoftTimeLimitExceeded()
        else:
            self.logger.error("Hard time limit exceeded for %s[%s]" % (
                self.task_name, self.task_id))
            exc = TimeLimitExceeded()

        if self._store_errors:
            self.task.backend.mark_as_failure(self.task_id, exc)
예제 #3
0
 def _on_hard_timeout(job, i):
     debug('hard time limit exceeded for %i', i)
     # Remove from _pool
     process, _index = _process_by_pid(job._worker_pid)
     # Remove from cache and set return value to an exception
     job._set(i, (False, TimeLimitExceeded()))
     # Run timeout callback
     if job._timeout_callback is not None:
         job._timeout_callback(soft=False)
     if not process:
         return
     # Terminate the process
     process.terminate()
예제 #4
0
파일: job.py 프로젝트: zhangqian2013/celery
    def on_timeout(self, soft, timeout):
        """Handler called if the task times out."""
        task_ready(self)
        if soft:
            warn('Soft time limit (%ss) exceeded for %s[%s]',
                 timeout, self.name, self.id)
            exc = SoftTimeLimitExceeded(timeout)
        else:
            error('Hard time limit (%ss) exceeded for %s[%s]',
                  timeout, self.name, self.id)
            exc = TimeLimitExceeded(timeout)

        if self.store_errors:
            self.task.backend.mark_as_failure(self.id, exc, request=self)
예제 #5
0
파일: job.py 프로젝트: kornholi/celery
    def on_timeout(self, soft, timeout):
        """Handler called if the task times out."""
        state.task_ready(self)
        if soft:
            self.logger.warning("Soft time limit (%ss) exceeded for %s[%s]" %
                                (timeout, self.task_name, self.task_id))
            exc = SoftTimeLimitExceeded(timeout)
        else:
            self.logger.error("Hard time limit (%ss) exceeded for %s[%s]" %
                              (timeout, self.task_name, self.task_id))
            exc = TimeLimitExceeded(timeout)

        if self._store_errors:
            self.task.backend.mark_as_failure(self.task_id, exc)
예제 #6
0
    def on_timeout(self, soft, timeout):
        """Handler called if the task times out."""
        if soft:
            warn('Soft time limit (%ss) exceeded for %s[%s]',
                 timeout, self.name, self.id)
        else:
            task_ready(self)
            error('Hard time limit (%ss) exceeded for %s[%s]',
                  timeout, self.name, self.id)
            exc = TimeLimitExceeded(timeout)

            self.task.backend.mark_as_failure(
                self.id, exc, request=self, store_result=self.store_errors,
            )

            if self.task.acks_late and self.task.acks_on_failure_or_timeout:
                self.acknowledge()
예제 #7
0
        def _on_hard_timeout(job, i, hard_timeout):
            if job.ready():
                return
            debug('hard time limit exceeded for %i', i)
            # Remove from cache and set return value to an exception
            exc_info = None
            try:
                raise TimeLimitExceeded(hard_timeout)
            except TimeLimitExceeded:
                exc_info = sys.exc_info()
            job._set(i, (False, ExceptionInfo(exc_info)))

            # Remove from _pool
            process, _index = _process_by_pid(job._worker_pid)

            # Run timeout callback
            if job._timeout_callback is not None:
                job._timeout_callback(soft=False, timeout=hard_timeout)
            if process:
                process.terminate()