Kolejka zatrzymuje się po wysłaniu tylko części wiadomości

0

Cześć,
mam kolejkę w Laravel do wysłania newslettera. Około 4000 odbiorców. Całość działa ok jednak kolejka zatrzymuje (i nie wznawia) pracę po wysłaniu około 500 wiadomości.
W bazie danych nie ma wpisu w tabeli failed_jobs natomiast cały czas utrzymuje się wpis w jobs

Podam jeszcze konfigurację supervisor

[program:name_queue]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php80/bin/path/artisan queue:work database --sleep=5 --tries=2 --timeout=36000
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=user
numprocs=8
redirect_stderr=true
stdout_logfile=/path-log.log
stopwaitsecs=3600
startretries=10
1

Brzmi bardziej jak ograniczenie po stronie serwera SMTP. Nie korzystasz z jakiegoś GMAILa który ma limit 500 maili na dzień?
Dodaj sobie logowanie czy coś próbuje się wykonać. Sprawdź wszystkie logi które tutaj podałeś w tych ustawieniach.

0

Nie, korzystam z smtp serwera natomiast to działa w taki sposób że klikam wyślij, wysyła te 500 wiadomości i tak jak napisałem się zatrzymuje.
Następnie ponownie klikam wyślij i wysyła dalej, tak mniej więcej kolejne 500. I tak sobie klikam kilka razy aż wyśle wszystkie. Po stronie kodu mam to ograniczone żeby nie szło po kilka razy do tej samej osoby tylko zapisuje email na który już zostało wysłane i później sprawdzam

0

Nie, korzystam z smtp serwera

To jak wysyłasz maile?

działa w taki sposób że klikam wyślij

To jak klikasz, czyli wykonujesz skrypt w przeglądarce to masz timeout może?

Opisz chociaż jak masz to okodowane. Jednak sądzę,. że gdzieś w logach może być kluczowa wskazówka.

0
ssquad napisał(a):.

Następnie ponownie klikam wyślij i wysyła dalej, tak mniej więcej kolejne 500. I tak sobie klikam kilka razy aż wyśle wszystkie.

Gdzie klikasz wyślij, w przeglądarce? Kolejki odpala się jako konsolowy proces. Uruchomienie taska wysyłającego 4000 wiadomości przez PHP FPM bez zwiększenia limitu czasu zawsze zakończy się po drodze timeoutem, tak jak pisze @jurek1980.
Jeśli nic nie failuje, to albo logika działania wysyłki i kolejek jest niewłaściwa (np. wciśnięcie wyślij powoduje zakolejkowanie wysyłki paczki 500 wiadomości i koniec) albo właśnie po drodze proces łapie killa.

0

W przeglądarce klikam przycisk wyślij. Nie mam timeout.
Następnie w kontrolerze

NewsletterJob::dispatch($args);

i w

handle

mam logikę wysłania wiadomości

0

Jak wysyłasz te wiadomości? Jak nie SMTP to jakieś API? Jak wywołasz to z linii komend ręcznie, bez schedulera to co się dzieje?
Może jak operujesz na dużych zbiorach danych masz osiągnięty limit pamięci, ale tu musisz dojść krok po kroku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1