Railsのコントローラーで、プロジェクトのフォルダーにファイルをダウンロードしたいと思いますpublic
(Linuxシステムコマンドを使用wget
)。rm
次に、ファイルを削除するコマンドを呼び出す前に、ファイルを1時間そのままにしておきます。後で再開する前に、ある時点でコードの実行が一時停止するようにタイムアウトを設定できますか?
2564 次
1 に答える
3
タイムアウトを設定できない理由は2つあります。1つ
は、Webサーバーのタイムアウトによってプロセスが強制終了されることです。
次に、タイムアウトをニーズに合わせて設定した場合でも、待機を担当するプロセスはリソースを消費し、使用できなくなります。この問題を解決するには、別のサーバープロセスをフォークする必要がありますが、本当にこれが必要ですか?
ただし、https://github.com/jmettraux/rufus-schedulerを使用できます
たとえば、コントローラーで
require 'rubygems'
require 'rufus/scheduler'
def download_using_wget
...
if some_method_to_wget_file
scheduler = Rufus::Scheduler.start_new
scheduler.in '1h' do
some_code_to_rm_file(file)
end
end
...
そして、some_code_to_rm_fileは、ファイルを取得してから1時間後に開始されます
于 2012-11-01T03:58:48.793 に答える