Ja, es ist frühestens der 26. Tag. Das heutige Thema
Ich werde das machen.
DockerFile
Fügen Sie zunächst die Beschreibung von redis zur Docker-Datei hinzu.
Das Bild und die Portnummer werden im redis: Teil angegeben. Danach habe ich redis_url in der Umgebung angegeben.
version: '3'
services:
db:
image: postgres:11.2-alpine
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: /bin/sh
environment:
WEBPACKER_DEV_SERVER_HOST: "0.0.0.0"
RAILS_SERVE_STATIC_FILES: "1"
EDITOR: "vim"
REDIS_URL: redis://redis:6379
volumes:
- ./apps:/apps
ports:
- "3000:3000"
- "3035:3035"
depends_on:
- db
tty: true
redis:
image: redis:latest
ports:
- 6379:6379
Das Gemfile sieht so aus.
Gemfile
gem 'redis-rails' gem'sidekiq 'wird hinzugefügt. Da beim Aktualisieren von sidekiq ein Fehler aufgetreten ist, wird die Version wie folgt angegeben. gem 'sidekiq', "~> 5.0"
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby "2.6.4"
gem "rails", "~> 6.0.0"
gem "pg", ">= 0.18", "< 2.0"
gem "puma", "~> 3.11"
gem "sass-rails", "~> 5"
gem "webpacker", "~> 4.0"
gem "turbolinks", "~> 5"
gem "jbuilder", "~> 2.7"
gem "bootsnap", ">= 1.4.2", require: false
gem "bcrypt"
gem "rails-i18n"
gem "kaminari"
gem "date_validator"
gem "valid_email2"
gem "nokogiri"
gem "slim-rails"
gem "html2slim"
#hinzufügen
gem 'redis-rails'
gem 'sidekiq', "~> 5.0"
...
config
Fügen Sie nun die folgenden Einstellungen zu config / initializers / redis.rb hinzu. Sie haben jetzt die Redis-URL hinzugefügt.
redis.rb
REDIS ||= Redis.new(url: ENV['REDIS_URL'] || 'redis://localhost:6379')
Fügen Sie die sidekiq-Einstellung zu config / environment / development.rb hinzu
config/environment/development.rb
config.active_job.queue_adapter = :sidekiq
Nachdem wir die Gemfile geändert haben, führen Sie den Bundle-Befehl aus
$ bundle
Führen Sie dann den Befehl bundle exec sidekiq aus, um Sidekiq zu starten.
$ bundle exec sidekiq
bash-4.4$ bundle exec sidekiq
m,
`$b
.ss, $$: .,d$
`$$P,d$P' .,md$P"'
,$$$$$bmmd$$$P^'
.d$$$$$$$$$$P'
$$^' `"^$$$' ____ _ _ _ _
$: ,$$: / ___|(_) __| | ___| | _(_) __ _
`b :$$ \___ \| |/ _` |/ _ \ |/ / |/ _` |
$$: ___) | | (_| | __/ <| | (_| |
$$ |____/|_|\__,_|\___|_|\_\_|\__, |
.d$$ |_|
Ich bin richtig aufgestanden. Von hier aus werde ich asynchrone Verarbeitung schreiben.
$ bin/rails g job sample
Running via Spring preloader in process 22386
invoke test_unit
create...
Die Aufgabe wird jetzt generiert. Die Datei app / jobs / sample_job.rb wurde erstellt. Dieses Mal schreibt die Aufgabe eine Aufgabe, um eine Zeichenfolge im Protokoll anzuzeigen.
class SampleJob < ApplicationJob
queue_as :default
def perform(*args)
Sidekiq::Logging.logger.info "-----Ich habe einen Beispieljob ausgeführt.-----"
end
end
Ich werde so schreiben. Da der äußere Rahmen von Rails g Job erstellt wird, ist jedes Teil eigentlich nur die Sidekiq :: Logging ... -Linie.
Job auf dem Controller aufrufen.
Ein Protokollausgabeauftrag wird asynchron mit einer Methode namens perform_later ausgeführt.
controller.rb
class Admin::TopController < Admin::Base
def index
SampleJob.perform_later
end
end
Wenn Sie auf den Indexbildschirm zugreifen und das Sidekiq-Protokoll überprüfen.
2020-06-15T11:30:52.383Z 15 TID-gphk3l13j SampleJob JID-631a85bb82f73f2a07beb772 INFO: ---------Ich habe einen Beispieljob ausgeführt.-------------
Sie können sehen, dass der Job so asynchron ausgeführt wird!
Sie können auch das Datum und die Uhrzeit für die Ausführung angeben. Mit der set-Methode können Sie den Job am nächsten Tag um 12.00 Uhr ausführen.
SampleJob.set(wait_until: Date.tomorrow.noon).perform_later
Das ist alles für die asynchrone Verarbeitung mit Sidekiq, nachdem Sie mit Docker eine Verbindung zu Redis hergestellt haben. Vielen Dank.
** Noch 74 Tage bis zur Vollendung **
Recommended Posts