JOB_ID 在 PHP 中使用 pda/pheanstalk 在 Laravel 4.2 中未找到 Beanstalkd 异常
JOB_ID NOT FOUND exception Beanstalkd in PHP using pda/pheanstalk in Laravel 4.2
我有一个用 Laravel 4.2 编写的工人排队系统。每当 artisan 试图在队列中获取下一个就绪作业时,我都会收到 JOB_ID not found 异常。
调查时我注意到以下内容:
如果下一个就绪作业的 ID = 74,当我 运行 artisan queue:work 时,它会尝试获取 ID 为 73 而不是 74 的下一个就绪作业,导致 JOB_ID 未发现异常。
我已经多次重启 beantalkd,但问题仍然存在。我也检查了每个作业的 TTR 并将其设置为 3600,但仍然没有成功。
有人遇到过这种情况吗?深入研究 Beanstalk PDA 库,我注意到当 ReleaseCommand class 调用其调度方法时会发生这种情况。
有人经历过吗?什么可能导致这个?
提前致谢。
没有正确的代码,即使有代码也很难定位这样的问题。但是我们过去有过,我可以解释应该如何工作,以及什么时候会抛出异常。
所以 worker 为一个工作做一个保留,并保持直到它开始工作,或者 beanstalkd 服务器收回它。
- 如果您看到作业 ID 74,当您 运行 它时,您看到它正在获取作业 ID 73,您需要确保没有
urgent jobs
,因为这是不同的来自 ready
个国家职位。
- 作业完成后,工作人员想要删除该作业。但只有在他仍然持有储备金的情况下才能做到。如果 worker 没有持有储备,则意味着 beanstalkd 服务器收回了作业,或者 worker 自己过早地完成了发布。 TTR 有一个默认的 60 秒,时间来解决,之后 Beanstalkd 从你的工人那里收回工作,因此不能删除它。这些情况需要在你的代码中定位。
- 使用精彩的管理控制台面板,帮助您查看工作状态并帮助您进行开发https://github.com/ptrofimov/beanstalk_console
我有一个用 Laravel 4.2 编写的工人排队系统。每当 artisan 试图在队列中获取下一个就绪作业时,我都会收到 JOB_ID not found 异常。
调查时我注意到以下内容:
如果下一个就绪作业的 ID = 74,当我 运行 artisan queue:work 时,它会尝试获取 ID 为 73 而不是 74 的下一个就绪作业,导致 JOB_ID 未发现异常。
我已经多次重启 beantalkd,但问题仍然存在。我也检查了每个作业的 TTR 并将其设置为 3600,但仍然没有成功。
有人遇到过这种情况吗?深入研究 Beanstalk PDA 库,我注意到当 ReleaseCommand class 调用其调度方法时会发生这种情况。
有人经历过吗?什么可能导致这个? 提前致谢。
没有正确的代码,即使有代码也很难定位这样的问题。但是我们过去有过,我可以解释应该如何工作,以及什么时候会抛出异常。
所以 worker 为一个工作做一个保留,并保持直到它开始工作,或者 beanstalkd 服务器收回它。
- 如果您看到作业 ID 74,当您 运行 它时,您看到它正在获取作业 ID 73,您需要确保没有
urgent jobs
,因为这是不同的来自ready
个国家职位。 - 作业完成后,工作人员想要删除该作业。但只有在他仍然持有储备金的情况下才能做到。如果 worker 没有持有储备,则意味着 beanstalkd 服务器收回了作业,或者 worker 自己过早地完成了发布。 TTR 有一个默认的 60 秒,时间来解决,之后 Beanstalkd 从你的工人那里收回工作,因此不能删除它。这些情况需要在你的代码中定位。
- 使用精彩的管理控制台面板,帮助您查看工作状态并帮助您进行开发https://github.com/ptrofimov/beanstalk_console