如何异步执行一次队列工作器?

时间:2018-08-16 23:36:41

标签: php laravel laravel-5 lumen artisan

我有一个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。*)

0 个答案:

没有答案