У меня есть работа, которая работает безупречно локально, но на производстве я сталкиваюсь с проблемами, когда она не работает. Я охватил весь handle()
с помощью try/catch
и не вижу ничего зарегистрированного в Bugsnag, несмотря на множество других исключений в других местах от развертывания.
public function handle() {
try {
// do stuff
} catch (\Exception $e) {
Bugsnag::notifyException($e);
throw $e;
}
}
Согласно Laravel Horizon это задание очереди выполняется в течение 0.0026001930236816406
секунд, и я никогда не вижу его работающим и никогда не вижу никаких других ошибок в таблице failed_jobs
, поскольку это относится к этому заданию.
конфиг / queue.php
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => (60 * 10), // 10 minutes
'block_for' => null,
],
конфиг / horizon.php
'environments' => [
'production' => [
'supervisor' => [
'connection' => 'redis',
'queue' => [
'default',
],
'balance' => 'auto',
'processes' => 10,
'tries' => 3,
// 10 seconds under the queue's retry_after to avoid overlap
'timeout' => (60 * 10) - 10, // Just under 10 mins
],
Если что-то заставляет эту работу повторяться снова и снова, как я могу узнать, как? Я в растерянности.
Расследование до настоящего времени
- Я ожидаю, что я смогу выполнить запрос:
SELECT DISTINCT exception, COUNT(id) as errors
FROM failed_jobs
WHERE payload LIKE '%[TAG-JOB-HAS]%'
GROUP BY exception;
Чтобы увидеть больше, чем это сообщение об ошибке:
Задание было выполнено слишком много раз или слишком долго
но это все, что я вижу.