无法两次跟踪流明作业调度

Posted

技术标签:

【中文标题】无法两次跟踪流明作业调度【英文标题】:Cannot track lumen job dispatch twice 【发布时间】:2021-03-08 06:05:28 【问题描述】:

我正在使用 Laravel lumen 8.x 来创建 REST API。 在我的项目中,我为那些 API 调用第三方 API,我创建了调用 API 的作业。在我的日志中,我得到了一次作业执行,但在第三方 API 上,他们说我多次调用一个 API。 我已经使用没有任何框架的单个 php 文件对此进行了测试。在那个 API 调用上,他们说它很好,因为它被调用了一次。 我认为我的 Lumen 项目或队列配置有问题。任何人都可以帮忙吗? 运行命令:

php artisan queue:work --timeout=600 --sleep=5 --tries=1 --memory=1024

这是我的 queue.php 配置

return [
    'default' => env('QUEUE_CONNECTION', 'redis'),
    'connections' => [
        'sync' => [
            'driver' => 'sync',
        ],
        'database' => [
            'driver' => 'database',
            'table' => 'jobs',
            'queue' => 'default',
            'retry_after' => null,
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            // 'queue' => env('REDIS_QUEUE', 'default'),
            'queue' =>'default',
            'retry_after' => null,
            'block_for' => null,
        ],

    ],
    'failed' => [
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],
];

【问题讨论】:

【参考方案1】:

我能想到的唯一解释是,您的工作需要的时间比预期的要长,因此它会超时,然后再次重试。 您可能想查看 laravel 文档中作业的超时配置

https://laravel.com/docs/8.x/queues#timeout

您还可以指定作业在失败之前可能尝试多少次,我猜默认为 3 次

https://laravel.com/docs/8.x/queues#max-job-attempts-and-timeout

【讨论】:

php artisan queue:work --timeout=600 --sleep=5 --tries=1 --memory=1024 我已经在使用超时和重试限制为 1

以上是关于无法两次跟踪流明作业调度的主要内容,如果未能解决你的问题,请参考以下文章

使用工作队列的 Kubernetes 作业调度

oo第二次总结

在多节点环境中仅触发一次调度作业

quaetz--作业管理和存储

如何设计分布式作业调度器? [关闭]

2017-2018-1 20179215《Linux内核原理与分析》第九周作业