Есть много способов сделать это, но я считаю этот метод простым и хорошо работает для меня.
я есть процесс, который обычно занимает несколько секунд, поэтому я пытаюсь использовать delayed_job для асинхронной обработки. Сама работа работает нормально, мой вопрос в том, как провести опрос, чтобы узнать, выполнено ли оно.
Я могу получить идентификатор из delayed_job, просто присвоив его переменной:
job = Available.delay.dosomething (: var => 1234)
+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+
| id | priority | attempts | handler | last_error | run_at | locked_at | failed_at | locked_by | created_at | updated_at |
+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+
| 4037 | 0 | 0 | --- !ru... | | 2011-04-... | | | | 2011-04... | 2011-04-... |
+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+
Но как только он завершает работу, он удаляет ее, и поиск завершенной записи возвращает ошибку:
@job=Delayed::Job.find(4037)
ActiveRecord::RecordNotFound: Couldn't find Delayed::Backend::ActiveRecord::Job with ID=4037
@job= Delayed::Job.exists?(params[:id])
Должен ли я изменить это и, возможно, отложить удаление полных записей? Я не уверен, как еще я могу получить уведомление о его статусе. Или опрос мертвых записей в качестве доказательства завершения нормально? Кто-нибудь еще сталкивался с чем-то похожим?