Запуск задержанного работника заканчивается ошибкой Далли - PullRequest
0 голосов
/ 08 ноября 2019

Здесь версии самоцветов и рельсов:

Драгоценные камни:

delayed_job (4.1.5)

dalli (2.7.8)

memcached -h |head -1

memcached 1.4.25

Rails

Rails 5.1.5

Я бегузадержанный рабочий через этот файл ./bin/delayed_job run, который выглядит так:

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

Когда я запускаю команду, я получаю сообщение об ошибке: журнал ошибок

Конфигурация хранилища кэшавыглядит следующим образом: config.cache_store = :dalli_store, 'localhost:11211'

Я подключился к серверу memcache * Кажется, что работает 1034 *

abv@abv:~/git/csrhub-frontend$ telnet localhost 11211
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 25174
STAT uptime 197
STAT time 1573225519
STAT version 1.4.25 Ubuntu
STAT libevent 2.0.21-stable

.

Затем я попытался получить данные из консоли Rails:

irb(main):004:0> Rails.cache.dalli.set('spree/app_configuration/admin_path', '/some/path')
=> 216172782113783808
irb(main):005:0> Rails.cache.dalli.fetch('spree/app_configuration/admin_path')
=> "/some/path"
irb(main):006:0> Rails.cache.dalli.flush
=> [true]
irb(main):007:0> Rails.cache.dalli.fetch('spree/app_configuration/admin_path')
=> nil

Кажется, работает. Я не могу найти проблему. Любые идеи очень приветствуются! Спасибо.

Я напечатал Dalli::Client между записями в кеш:

#<Dalli::Client:0x0000000009104038 @servers=["memcached:11211"], @options={:compress=>nil}, @ring=#<Dalli::Ring:0x000000000a3ab510 @servers=[#<Dalli::Server:0x000000000a3ab7e0 @hostname="memcached", @port=11211, @weight=1, @socket_type=:tcp, @fail_count=0, @down_at=2019-11-08 19:16:10 +0000, @last_down_at=2019-11-08 19:16:10 +0000, @options={:down_retry_delay=>60, :socket_timeout=>0.5, :socket_max_failures=>2, :socket_failure_delay=>0.01, :value_max_bytes=>1048576, :error_when_over_max_size=>false, :compressor=>Dalli::Compressor, :compression_min_size=>1024, :compression_max_size=>false, :serializer=>Marshal, :username=>nil, :password=>nil, :keepalive=>true, :sndbuf=>nil, :rcvbuf=>nil, :compress=>nil}, @sock=nil, @msg="closed stream", @error="IOError", @pid=nil, @inprogress=false, @lock=#<Monitor:0x000000000a3ab3f8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::Mutex:0x000000000a3ab380>>, @version="1.5.16">], @continuum=nil, @failover=true>>

1 Ответ

0 голосов
/ 11 ноября 2019

Проблема была решена путем повторной инициализации Dalli cahce в самом отложенном задании.

connection = Dalli::Client.new Environment.config('cache_store')['host'].to_s + ':' + Environment.config('cache_store')['port'].to_s

Похоже, что среда не была загружена работником должным образом.

...