Рубиновый поток резко прерывается при использовании rest-client - PullRequest
0 голосов
/ 03 января 2019

Вот последняя попытка этого поста:

Когда я пытаюсь сделать вызов, используя rest-client в потоке, он завершается неудачно и рано покидает поток.Когда я запускаю его вне потока, все нормально.

Есть идеи?

require 'base64'
require 'json'
require 'rest-client'
require 'thwait'

test = Thread.new {
    endpoint = "http://my/url"
    headers = {'Authorization' => "Basic #{Base64.encode64("username:password")}", 'Accept' => 'Application/json', 'Content-Type' => 'Application/json'}
    payload = JSON.parse("{\"documents\": { \"textField1\":\"asdf\" }}").to_json

    # See the results of the above. Successful now (headers hash with expected encoded value, JSON string as expected)
    puts headers
    puts payload

    # Expecting REST response on the console. Nothing appears on the console.
    puts RestClient::Request.execute(:method => :post, :url => endpoint, :headers => headers, :payload => payload, :verify_ssl => false)
    # Expecting simple text output to the console to see if execution reaches this point. Nothing appears on the console.
    puts 'done'
}

# Where this is actually being used, ThreadsWait is used for thread management, so simulating that here
thwait = ThreadsWait.new(test)
thwait.next_wait

1 Ответ

0 голосов
/ 04 января 2019

Вам нужно join поток, чтобы увидеть вывод.Если вы не присоединитесь к нему до завершения основного потока, он уничтожит его ( см. Документы ).

require 'rest-client'
endpoint = "/my/url"
headers = {'Authorization' => "Basic #{Base64.encode64("mycreds")}", 'Accept' => 'Application/json', 'Content-Type' => 'Application/json'}
payload = JSON.parse("{\"documents\": { \"textField1\":\"asdf\" }}").to_json
test_thread = Thread.new {
    response = RestClient::Request.execute(:method => :post, :url => endpoint, :headers => headers, :payload => payload, :verify_ssl => false)
    puts response
}.join
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...