php - Laravel 队列作业不遵守超时
问题描述
我有这个过程设置。
php artisan queue:work beanstalkd --sleep=3 --tries=1 --timeout=0 --queue=medium,messages
我也有一个设置工作
public $timeout = 100000000;
但是在此之前,该作业已因has been attempted too many times or run too long. The job may have previously timed out
首次运行的消息而停止。
我在 php.ini 中也有这个
max_execution_time = 0
我在这里想念什么?
解决方案
安慰
我想从命令行执行的事情(正如您在工作中提到的创建更多工作)。但问题是,你可以将它的业务逻辑提取到一个命令中。
示例:一个控制台命令触发一个从 Imgur 获取图像的命令。该类FetchImages
包含获取图像的实际业务逻辑。
命令
包含实际逻辑的类。您还应该能够从您的应用程序中使用app()->make(Command::class)->handle()
.
示例:示例 1 中提到的命令。包含对 Imgur 进行实际 API 调用并处理返回数据的逻辑。
工作
Laravel 5.0jobs
那时还不是一回事。但正如我所看到的,作业就像命令,但它们是排队的并且可以被调度。(正如您可能在这些示例中看到的,这些命令实现了您提到的接口SelfHandling
和ShouldBeQueued
)。
我看到了变化Commands
并且Jobs
很难理解。
编辑:来自 Laravel 文档:
app/Commands 目录已重命名为 app/Jobs。但是,您不需要将所有命令移动到新位置,您可以继续使用 make:command 和 handler:command Artisan 命令来生成类。
同样,app/Handlers 目录已重命名为 app/Listeners,现在只包含事件侦听器。但是,您不需要移动或重命名现有的命令和事件处理程序,您可以继续使用 handler:event 命令来生成事件处理程序。
通过为 Laravel 5.0 文件夹结构提供向后兼容性,您可以将您的应用程序升级到 Laravel 5.1,并在您或您的团队方便时慢慢将您的事件和命令升级到新位置。
推荐阅读
- weather-api - React> locale img 而不是来自 api 的图像
- android - 错误:在内核映像文件中找不到“Linux 版本”字符串:D:\Android\androidSDK/system-images\android-30\google_apis\x86_64\/kernel-ranchu
- node.js - 如何在nodejs后端验证谷歌登录(通过Firebase)idToken?
- python - 部分离散的颜色图 matplotlib
- arrays - 如何使用bash替换文件中的数组?
- android - 提交现有 android app/apk 的新版本会受到 Android App Bundle 要求的影响吗?
- r - 从 rpart 模型中检索决策规则
- c# - Hot Chocolate (GraphQL) 根据请求获取架构(通过中间件或过滤器)
- python - 在我的货币转换器中获取“KeyError”
- reactjs - 尽管传递了值,但反应常量没有更新