首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Horizon:作业状态跟踪

Laravel Horizon:作业状态跟踪
EN

Stack Overflow用户
提问于 2018-07-13 20:12:17
回答 0查看 1K关注 0票数 3

对于某个Laravel Horizon作业,我有一个函数可以根据Horizon存储库检查特定型号的作业当前是否正在运行:

代码语言:javascript
复制
public static function isRunning($model)
{        
    $tag = self::getTag($model);
    $tagRepository = app()->make(TagRepository::class);
    $jobRepository = app()->make(JobRepository::class);
    $jobIds = $tagRepository->jobs($tag);
    $jobs = $jobRepository->getJobs($jobIds);
    $runningJobs = collect($jobs)->reject(function($job) {
        return $job->status === HorizonRedisJobStatuses::STATUS_COMPLETED // 'completed'
            || $job->status === HorizonRedisJobStatuses::STATUS_FAILED; // 'failed'
    });

    return $runningJobs->count() > 0;
}

此代码在大多数情况下都有效,但是,有时会因为超时而重新启动此类作业。在这种情况下,我在$jobs变量中的所有作业都被标记为"completed",因此函数返回false。重新启动的作业似乎不会填充到存储库。

目前,我想出的唯一解决办法是在进程的开始/结束时在数据库中手动跟踪作业状态,但是,如果Horizon尝试次数不足,这仍然会给我错误的结果。

那么,有没有人知道如何在Horizon中正确跟踪作业状态?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51324850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档