1

Rails アプリケーションで Celluloid プールを使用して、ユーザーがファイルをアップロードした後に PDF 変換をオフロードしています。

初期化子を使用して、アプリケーションのグローバル変換プールを作成しました。

私の開発環境(OS X、シン)ではすべてうまくいきました。また、私の CentOS ボックス (Apache、Passenger) でも問題なく実行できます。

これは基本的に初期設定です。

config/initializers/converter_pool.rb

require './lib/x/convert_async'

CONVERT_POOL=X::ConvertAsync.pool

lib/X/convert.rb

module X
  class Convert
  end
end

lib/X/convert_async.rb

require_relative 'convert'

module X
  class ConvertAsync < Convert
    include Celluloid
  end
end

ある段階で、私のプールは CentOS ボックス (usertest env) で動作を停止しましたが、私の開発環境では問題なく動作し続けました。

追記: 画像を更新するメソッドがコンソールから呼び出された場合でも、プールは機能していました。問題は、ロード順序または何らかのアクセス許可に関係していたと思います。

何が原因なのかわからない - 新しい Linux カーネルと gem の更新があった。

さまざまな試みの後、クラス定義の後にプールを初期化し、プールの初期化子を削除することで、最終的に再び機能するようになりました。

module X
  class ConvertAsync < Convert
    include Celluloid
  end
end

CONVERT_POOL=X::ConvertAsync.pool

何が起こったのかをよりよく理解したいので、まだ質問があります。

何が原因だったのか誰か知っていますか?クラス定義の後にセルロイドプールをインスタンス化するのは悪い考えですか? 潜在的な問題はありますか?

光を当てることができる人には、事前に感謝します:)乾杯、オイゲン

4

0 に答える 0