Не получая ответа после отправки http-запроса Guzzle из работы - PullRequest
0 голосов
/ 01 июля 2018

Я отправляю полезную нагрузку в службу, чтобы распечатать PDF прямо из задания. Я запускаю задание локально, используя artisan queue:work database, а handle() вызывается до той части, где я отправляю http-запрос с помощью Guzzle.

handle() {

    try {

        print_r("Assembling invoice data\n");

        // ...
        // ... doing some manual serialising
        // ...

        $client = new Client();
        print_r("Sending pdf print job\n");
        $response = $client->request("POST", $url, [
            "json" => [
                "sender_info" => $senderInfo,
                "contact" => $contact,
                "invoice_lines" => $invoiceLines,
                "invoice_totals" => $invoiceTotals,
                "invoice_footer" => $this->invoice->footer,
                "invoice_note" => $this->invoice->note,
                "invoice_meta" => [
                    "key" => $this->invoice->meta_key,
                    "value" => $this->invoice->meta_value
                ],
                "invoice_date" => $this->invoice->date->format("d-m-Y"),
                "invoice_due_date" => $this->invoice->due_date->format("d-m-Y"),
                "invoice_color" => $this->invoice->color,
                "invoice_number" => $this->invoice->number_prefix . $this->invoice->number_value,
                "logo" => $this->invoice->logo,
                "id" => $this->invoice->id
            ]
        ]);
        print_r($response);

        if ($response->getStatusCode() !== 200) {
            print_r("pdf print job failed\n");

            // @todo: send message to bugsnagger
            throw new \Exception("Generating a pdf failed");
        }

        print_r("Pdf print job complete\n");

    } catch (Exception $e) {
        print_r($e);
    }
}

Я проверил, что задание выполняется по запросу клиента, но не после, прочитав операторы print_r(). Когда работа выполнена, все, что я вижу, это;

[2018-07-01 09:04:36] Processing: App\Jobs\ProcessNewInvoice
Assembling invoice data
Sending pdf print job

... 255 раз за секунду.

Сначала у меня был этот код вне работы Laravel. Это, казалось, сработало. Не таймауты или тому подобное. Теперь у меня проблемы с выяснением того, где это не получается. Любой совет?

1 Ответ

0 голосов
/ 01 июля 2018

Причина была совершенно не связана.

"invoice_date" => $this->invoice->date->format("d-m-Y"),
"invoice_due_date" => $this->invoice->due_date->format("d-m-Y"),

Свойства даты в модели не были преобразованы в объект Carbon, и поэтому метод ->format() не существовал. Чтобы исправить преобразование даты в моей модели, мне пришлось добавить их в Invoice.php;

protected $dates = [
    "date",
    "due_date",
];

Меня по-прежнему беспокоит, что задание не выдало исключение, и оно не было помечено как сбойное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...