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
何が起こったのかをよりよく理解したいので、まだ質問があります。
何が原因だったのか誰か知っていますか?クラス定義の後にセルロイドプールをインスタンス化するのは悪い考えですか? 潜在的な問題はありますか?
光を当てることができる人には、事前に感謝します:)乾杯、オイゲン