2

それで、私が待ちたくないhttppostリクエストを送信するsidekiqプロセスがあるとしましょう。私はこれが労働者のスピードを妨げるものになりたくありません。

私が持っているアイデアの1つは、この単純なサンプルコードをEventMachineHttpリクエストに使用することです。

  EventMachine.run do
    http = EventMachine::HttpRequest.new("http://www.example.com").post :options => {...}
    http.callback do
      puts "got a response"
      puts http.response
      EventMachine.stop
    end
    puts "worker finished"
  end

したがって、コールバックが呼び出される前にワーカープロセスが終了したと仮定しましょう。ここで何が起こりますか?これは、コールバックへのポインタが失敗することを意味しますか?ここで制御の流れを理解したいと思います。

4

2 に答える 2

2

を呼び出すまで、EventMachine.runブロックは戻りませんEventMachine.stop。したがって、あなたの場合、コールバックが実行されないとワーカーは終了しません。

于 2012-11-13T17:41:14.327 に答える
2

必要なものに応じて:

  1. CPUSidekiqワーカーを利用したいのは非常に軽量です。
    応答を待っている間、CPUを利用するためにそれらをさらに実行できます。
  2. あなたは労働者がより早く終わらせることを望みます。
    各リクエストをキューに入れて、異なるワーカーが処理できるようにすることができます。EMのnext_tick()のようになります。SidekiqとCelluloidは私たちの考え方を変えるので、私は興奮しています。http://www.slideshare.net/KyleDrake/hybrid-concurrency-patterns?utm_source=rubyweekly&utm_medium=email
于 2012-11-14T07:37:02.877 に答える