У меня есть процесс, который обычно занимает несколько секунд, поэтому я пытаюсь использовать 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])
Стоит ли мне изменить это и, возможно, отложить удаление полных записей? Я не знаю, как еще я могу получить уведомление о его статусе. Или опрос мертвой записи в качестве доказательства завершения - это нормально? Кто-нибудь еще сталкивался с чем-то похожим?