Есть много способов сделать это, но я считаю этот метод простым и хорошо работает для меня.

я есть процесс, который обычно занимает несколько секунд, поэтому я пытаюсь использовать 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])

Должен ли я изменить это и, возможно, отложить удаление полных записей? Я не уверен, как еще я могу получить уведомление о его статусе. Или опрос мертвых записей в качестве доказательства завершения нормально? Кто-нибудь еще сталкивался с чем-то похожим?

Ответы на вопрос(6)

Ваш ответ на вопрос