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