English ▼
Skip to page content Skip to main navigation
e.g. "templates" or "datastore"

# Blobstore RPC Objects

Some Blobstore functions take an RPC object argument to alter how the application communicates with the Blobstore. Also, asynchronous Blobstore functions return RPC objects to represent pending requests.

An application can alter request behavior, setting a deadline time or a callback function. To do this, the application calls the `create_rpc()` function. This function returns an RPC object; the application passes this to a Blobstore function.

Note: Don't use an RPC object for more than one request; each request needs its own.

An RPC object has the following methods.

wait()

  Waits for the request in progress to complete, invokes the RPC callback function if any, then returns.

  If the request has already completed by the time the method is called, the method calls the callback function (if any) and returns immediately. The request is complete when the remote host successfully returns a response, the deadline elapses, or the request fails for another reason.

  If `wait()` has already been called for this RPC object, a subsequent call does nothing. The callback function is not called again.

check_success()

  Calls the `wait()` method, then checks whether the request got a response successfully. If the deadline elapsed, or if the request failed, this method raises an appropriate exception. Otherwise, the method returns without raising an exception.

get_result()

  Calls `check_success()` (which in turn calls the `wait()` method), then returns an object containing the response data.

  The call to `check_success()` raises an exception if the deadline elapsed or if the request failed. `get_result()` propagates this exception to the caller.

The object has the following properties:

callback

  The callback function. You can modify this property after the object has been created to use a callback function that can refer to the RPC object, such as to call `get_result()`.

deadline

  The deadline for the request. This property is read-only.