Задержка задания вставляет каждый запрос дважды в бэкэнд? - PullRequest
0 голосов
/ 22 марта 2019

У меня есть приложение Rails 5, в котором оно использует отложенное задание для извлечения данных из внешнего API и сохранения их в хранилище БД,

Однако, когда я размещаю запрос на заполнение из API, он ставится в очередь в один и тот же запрос заполнения дважды, а не обрабатывается один раз.

После первоначального наблюдения я вижу, что обработчики для двух записей сильно отличаются от других. Ниже приведены фрагменты моего кода, которые я пробовал.

Нужно понимать, почему это может происходить. Любая помощь будет высоко ценится. Заранее спасибо.

Код контроллера

class MovieController < ApplicationController

  def new_movie_seed_request
    @languages = Language.all.by_lang_name
    @movie = Movie.new
  end

  def seed_request_for_movie
    @movie_title = params["mov_title"]
    @movie_language = params["mov_language"]
    if params.present? && params["mov_title"].present? && params["mov_language"].present?
      Delayed::Job.enqueue SeedMovieViaTmdbJob.new(params["mov_title"], params["mov_language"])
      flash.now[:success] = 'Request for seeding has been submitted successfully'
    else
      flash[:danger] = 'Please enter valid movie title and movie language in order to proceed with the seeding request'
      redirect_to action: "new_movie_seed_request"
    end
  end

end

Задержанные записи таблицы заданий после постановки в очередь запроса.

INSERT INTO "delayed_jobs" ("handler", "run_at", "queue", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n  job_class: SeedMovieViaTmdbJob\n  job_id: b21ae8e7-65ec-4960-b697-d6f056c275da\n  provider_job_id: \n  queue_name: default\n  priority: 0\n  arguments:\n  - Gully Boy\n  - hi\n  executions: 0\n  locale: en\n"], ["run_at", "2019-03-22 09:20:41.852410"], ["queue", "default"], ["created_at", "2019-03-22 09:20:41.852566"], ["updated_at", "2019-03-22 09:20:41.852566"]]

INSERT INTO "delayed_jobs" ("handler", "run_at", "queue", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["handler", "--- !ruby/object:SeedMovieViaTmdbJob\narguments:\n- Gully Boy\n- hi\njob_id: b21ae8e7-65ec-4960-b697-d6f056c275da\nqueue_name: default\npriority: \nexecutions: 0\n"], ["run_at", "2019-03-22 09:20:41.877060"], ["queue", "default"], ["created_at", "2019-03-22 09:20:41.877122"], ["updated_at", "2019-03-22 09:20:41.877122"]]

Обратите внимание на изменение атрибутов обработчика двух созданных записей.

...