2

Railsのコントローラーで、プロジェクトのフォルダーにファイルをダウンロードしたいと思いますpublic(Linuxシステムコマンドを使用wget)。rm次に、ファイルを削除するコマンドを呼び出す前に、ファイルを1時間そのままにしておきます。後で再開する前に、ある時点でコードの実行が一時停止するようにタイムアウトを設定できますか?

4

1 に答える 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 に答える