Nano Hash - криптовалюты, майнинг, программирование

Перевод поискового робота в фоновый режим: Resque или Sidekiq

У меня есть приложение Rails, которое позволяет пользователю загружать CSV-файл со списком (иногда 200 тыс.) URL-адресов для сканирования. Затем в контроллере я перейду к каждой строке этого файла, а затем вызову другой метод, который принимает URL-адрес и несколько параметров, а затем, когда метод обхода будет выполнен, сохраните несколько переменных в нескольких моделях. Ниже показано, как выглядит мой контроллер:

def import
  if request.post? && params[:inputfile].present?
    infile = params[:inputfile].read
    CSV.parse(infile) do |row|
      @crawler = Crawler.new(row[0])
      @crawler.crawl #do the actual crawling using Mechanize Gem and set a few variable in the crawler object
      #when crawl is done save a few stuff into some models
    end
  end
end

Мне нужно переместить это в фоновый режим (чтобы этот процесс не удерживал все мое приложение rails) и иметь возможность асинхронно запускать код для каждой строки. Я думал что-то вроде того, чтобы поставить все в очередь и иметь очередь внутри этой очереди для каждой строки... или что-то в этом роде. Я подумал, могу ли я использовать для этого Resque или Sidekiq? если да, то с чего мне начать?


Ответы:


1

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

В наши дни Sidekiq лучше поддерживается, а многопоточность очень полезна для вашего варианта использования, поэтому я бы выбрал его. Хорошей отправной точкой являются домашняя страница Sidekiq и этот Railscast, оба из которых дают вам много информации, чтобы взяться за дело.

04.10.2012
  • У меня вопрос, возможно ли иметь очередь внутри другой очереди? Я видел домашнюю страницу / github Railscast и sidekiq, и пример, который я вижу, прост. Я ищу что-то более сложное, например, вложенные очереди или что-то в этом роде? дайте мне знать, если вы понимаете мою точку зрения. 04.10.2012
  • Нет ничего необычного в том, что работник ставит в очередь дополнительную работу в ходе обработки. Это не вложенные очереди как таковые (очереди по-прежнему независимы по отношению к Sidekiq/Resque/что угодно), но я думаю, что это то, что вы хотите. Возвращаясь к вашему примеру, обработка CSV может быть заданием, которое запускает задание сканера для каждой строки. 04.10.2012
  • Это именно то, чего я хочу... Я займусь этим. Спасибо. 04.10.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..