我有一个post api调用,该调用调用一个artisan函数,该函数执行一次已调度的作业。
命令行,它按预期工作:
php artisan queue:work --once //runs one job and then exits
php artisan queue:work // worker continuously runs jobs as they are dispatched
无论如何,调用代码中的artisan函数本身都会挂起,以至于它永远不会返回(行为如queue:work
,而没有--once
标志,并且不会执行api调用中的回调):
$app->post('/group/{groupId}/run-progress',
$data = app(TestModel::class)->testFunc();
$this->dispatch(new ProgressJob($test));
Artisan::call('queue:work',['--once']); //executes but hangs
return response()->json($data); //doesn't return
);
我知道我可以安装一个主管来代替在根目录中运行队列工作器来处理此问题,但是我希望能够执行作业,并且仍然从调用中返回。这可能吗?
Laravel框架版本Lumen(5.3.3)(Laravel组件5.3。*)