Jua*_*oto 7 python queue task-queue redis python-rq
试图找到一种捕获RQ作业超时的好方法,因此可以在超时后重新排队.
基本上,正确的解决方案将提供一种方法(例如,工作者中的异常处理程序或类似的东西)来重新排队超时的作业.此外,如果作业返回failed队列,那也是一个很好的答案.
非常感谢!任何帮助将不胜感激!
听起来您想使用异常处理。来自文档:
作业可能会因发生异常而失败。当您的 RQ 工作人员在后台运行时,您如何收到这些异常的通知?
默认值:失败队列 RQ 的默认安全网是失败队列。每个执行失败的作业及其异常信息(类型、值、回溯)都存储在此处。虽然这可以确保失败的作业不会“丢失”,但这对于主动获取有关作业失败的通知是没有用的。
自定义异常处理程序 从0.3.1版本开始,RQ支持注册自定义异常处理程序。这使得可以完全替换默认行为(将作业发送到失败队列),或者在发生异常时采取其他步骤。
您还可以将作业存储在 Redis 排序集中,以 job_id 作为键和time.time() + timeout分数,然后让工作线程运行ZRANGEBYSCORE sorted_set 0 [current_time]并处理作为超时作业返回的任何内容。
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |