Class: PredictionIO::EngineClient
- Inherits:
-
Object
- Object
- PredictionIO::EngineClient
- Defined in:
- lib/predictionio/engine_client.rb
Overview
This class contains methods that interface with PredictionIO Engine Instances that are trained from PredictionIO built-in Engines.
Many REST request methods support optional arguments. They can be supplied to these methods as Hash’es. For a complete reference, please visit prediction.io.
Synopsis
In most cases, using synchronous methods. If you have a special performance requirement, you may want to take a look at asynchronous methods.
Instantiate an EngineClient
# Include the PredictionIO SDK
require 'predictionio'
client = PredictionIO::EngineClient.new
Send a Query to Retrieve Predictions
# PredictionIO call to record the view action
begin
result = client.query('uid' => 'foobar')
rescue NotFoundError => e
...
rescue BadRequestError => e
...
rescue ServerError => e
...
end
Defined Under Namespace
Classes: BadRequestError, NotFoundError, ServerError
Instance Method Summary collapse
-
#asend_query(query) ⇒ Object
:category: Asynchronous Methods Asynchronously sends a query and returns PredictionIO::AsyncResponse object immediately.
-
#get_status ⇒ Object
Returns PredictionIO’s status in string.
-
#initialize(apiurl = 'http://localhost:8000', threads = 1, thread_timeout = 60) ⇒ EngineClient
constructor
Create a new PredictionIO Event Client with defaults: - 1 concurrent HTTP(S) connections (threads) - API entry point at localhost:8000 (apiurl) - a 60-second timeout for each HTTP(S) connection (thread_timeout).
-
#pending_requests ⇒ Object
Returns the number of pending requests within the current client.
-
#send_query(*args) ⇒ Object
:category: Synchronous Methods Synchronously sends a query and block until predictions are received.
Constructor Details
#initialize(apiurl = 'http://localhost:8000', threads = 1, thread_timeout = 60) ⇒ EngineClient
Create a new PredictionIO Event Client with defaults:
-
1 concurrent HTTP(S) connections (threads)
-
API entry point at localhost:8000 (apiurl)
-
a 60-second timeout for each HTTP(S) connection (thread_timeout)
65 66 67 |
# File 'lib/predictionio/engine_client.rb', line 65 def initialize(apiurl = 'http://localhost:8000', threads = 1, thread_timeout = 60) @http = PredictionIO::Connection.new(URI(apiurl), threads, thread_timeout) end |
Instance Method Details
#asend_query(query) ⇒ Object
:category: Asynchronous Methods Asynchronously sends a query and returns PredictionIO::AsyncResponse object immediately. The query should be a Ruby data structure that can be converted to a JSON object.
Corresponding REST API method: POST /
See also #send_query.
92 93 94 |
# File 'lib/predictionio/engine_client.rb', line 92 def asend_query(query) @http.apost(PredictionIO::AsyncRequest.new('/queries.json', query.to_json)) end |
#get_status ⇒ Object
Returns PredictionIO’s status in string.
75 76 77 78 79 80 81 82 |
# File 'lib/predictionio/engine_client.rb', line 75 def get_status status = @http.aget(PredictionIO::AsyncRequest.new('/')).get begin status.body rescue status end end |
#pending_requests ⇒ Object
Returns the number of pending requests within the current client.
70 71 72 |
# File 'lib/predictionio/engine_client.rb', line 70 def pending_requests @http.packages.size end |
#send_query(*args) ⇒ Object
:category: Synchronous Methods Synchronously sends a query and block until predictions are received.
See also #asend_query.
call-seq: send_query(data) send_query(async_response)
104 105 106 |
# File 'lib/predictionio/engine_client.rb', line 104 def send_query(*args) sync_events(:asend_query, *args) end |