在AWS ElasticBeanstalk上使用Symfony设置定期任务(使用cron.yaml)

时间:2018-10-17 12:23:08

标签: symfony cron amazon-elastic-beanstalk periodic-task

我在使用Symfony应用程序的 ElasticBeanstalk Worker Tier 上的定期任务上遇到问题。

我已经在App Server和Worker Tier上部署了相同的源代码。 我已经设置了我的cron.yaml文件,并且已成功加载。 邮件已发送,但出现406错误:

"POST /worker/reclamation/auto-reply HTTP/1.1" 406 481 "-" "aws-sqsd/2.4"

我的cron.yaml文件:

version: 1
cron:
 - name: "reclamation-reply"
   url: "/worker/reclamation/auto-reply"
   schedule: "*/10 * * * *"

AWS Documentation说:

  

URL是POST请求发送到的路径,以触发   工作。

从那里,我决定用POST方法编写FOSRest路由,在其中触发需要运行的命令。 我不知道这样做是否正确,所以,我想我的问题可能出在这里。

/**
 * @FOSRest\Route("/worker")
 */
class WorkerController extends AbstractController
{
    /**
     * @FOSRest\Post("/reclamation/auto-reply")
     */
    public function ticketReply(KernelInterface $kernel)
    {
        $application = new Application($kernel);
        $application->setAutoExit(false);
        $input = new ArrayInput(array(
            'command' => 'app:reclamation:reply',
        ));
        $output = new NullOutput();
        $application->run($input, $output);
        return new Response("");
    }

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

终于可以了!

似乎发生了错误,因为我忘记配置FOSRest路由的format_listener