【问题标题】:No timeout for python-rq jobpython-rq 作业没有超时
【发布时间】:2016-06-24 12:12:14
【问题描述】:

有没有办法为工作人员指定“最大”= inf 超时? 我有一些长时间运行的任务,如果由于超时而失败,我会在工作人员内部处理它。

可以通过 cli 指定吗?

【问题讨论】:

    标签: python-3.x redis queue python-rq


    【解决方案1】:

    timeout 参数指定任务在被认为“丢失”之前的最大运行时间。可以与@job、Queue、enqueue 和 enqueue_call 一起使用。

    from rq.decorators import job
    
    @job('low', connection=my_redis_conn, timeout=600)
    def long_running_task(x, y):
        # Code
    

    python-rq.org/docs

    【讨论】:

    • 这并没有回答没有超时的问题。
    • 我以为是为了指定超时。哦,等等,它是! :D
    【解决方案2】:

    设置Queue(default_timeout=-1) 可以解决问题。以下是对他们源代码的参考:

        def create_job(self, func, args=None, kwargs=None, timeout=None,
                   result_ttl=None, ttl=None, failure_ttl=None,
                   description=None, depends_on=None, job_id=None,
                   meta=None, status=JobStatus.QUEUED, retry=None):
        """Creates a job based on parameters given."""
        timeout = parse_timeout(timeout)
    
        if timeout is None:
            timeout = self._default_timeout
        elif timeout == 0:
            raise ValueError('0 timeout is not allowed. Use -1 for infinite timeout')
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2013-01-01
      • 2021-06-14
      • 2012-02-13
      • 2012-08-23
      相关资源
      最近更新 更多