1

私はクリスタルを初めて使用し、ステータスが完了しているかどうかを確認するためにファイバーを生成しようとしています。ここにいくつかのコードがあります。

def fiber_operations()
    status = -1

    spawn do
       while status != 5
           response = HTTP::Client.get "https://api.com/endpoint"
           response_to_hash = JSON.parse response.body
           status = response_to_hash["status"]
           sleep 2.seconds
       end
    end

    Fiber.yield
end

これらのいくつかを作成すると、このエラーが発生します (これより前は正常に動作しているようです)。

「spawn で未処理の例外: SSL_shutdown: 操作が進行中です (Errno)」

編集:

さらに情報を追加しました。おもちゃの例で十分だと思いましたが、HTTP::Client に関連している可能性があるため、追加しました。いくつかの API エンドポイントに対して GET を実行し、その方法でステータスを取得しています。1 つの GET が進行中の場合、別の GET を開くことができないのでしょうか? もしそうなら、これを行う方法は?

編集2:

修正ではありませんでした。

4

2 に答える 2

0

この「エラー」は、操作完了の待機リストに関連しています。https://github.com/crystal-lang/crystal/pull/4433で修正する必要があります

Crystal 0.23.0 でリリースされました

于 2017-05-19T15:15:07.503 に答える