subscribe
The subscribe
method subscribes to a published remote table that matches the specified ticket
.
If the remote table is closed or its owner session is closed, the ticket
becomes invalid. If the same ticket
is subscribed multiple times, multiple subscriptions will be created.
Syntax
subscribe(ticket: bytes) -> Table
Parameters
Parameter | Type | Description |
---|---|---|
ticket | bytes | The bytes of the ticket. |
Returns
A Table
that is a subscribed to the remote table.
Examples
The following example installs the Deephaven Python Client (pydeephaven
) on a Deephaven server running on port 10001
. It also starts a Deephaven server running locally on port 10000
with anonymous authentication.
Next, the client creates a table on the server on port 10000
. A shared ticket is created that publishes the table, which allows it to be shared with other sessions. Finally, a Barrage session is started that listens to the server on port 10000
, and a new local table that is subscribed to the shared ticket's table is obtained.
import os
os.system("pip install pydeephaven")
from deephaven.barrage import barrage_session
from pydeephaven.session import SharedTicket
from pydeephaven import Session
# Create a client session connected to the server running on port 10000
client_session = Session(
host="deephaven.local",
port=10000,
auth_type="io.deephaven.authentication.psk.PskAuthenticationHandler",
auth_token="YOUR_PASSWORD_HERE",
)
# Create a table on that server with the client session
client_table = client_session.time_table("PT1s").update(["X = 0.1 * i", "Y = sin(X)"])
# Create a ticket through which `client_table` can be published
client_ticket = SharedTicket.random_ticket()
# Publish the ticket (table)
client_session.publish_table(client_ticket, client_table)
# Create a barrage session that listens to the server on port 10000
my_barrage_session = barrage_session(
host="deephaven.local",
port=10000,
auth_type="io.deephaven.authentication.psk.PskAuthenticationHandler",
auth_token="YOUR_PASSWORD_HERE",
)
# Subscribe to the client table ticking data
local_table = my_barrage_session.subscribe(client_ticket.bytes)
# Perform operations on this now-local table
new_local_table = local_table.last_by()
- local_table
- new_local_table
Shared tickets have a life cycle tied to the source. Tickets can be fetched by other Deephaven sessions to access the table only as long as the table is not released. When the table is released either through an explicit call of the close
method, implicitly through garbage collection, or through the closing of the publishing session, the shared ticket will no longer be valid.
The following `docker-compose.yml` file was used to run the above code block. It starts two Deephaven servers: one running on port `10001` and the other on port `10000`. The code block was run from the server running on port `10001`.
services:
deephaven1:
image: ghcr.io/deephaven/server:latest
ports:
- 10001:10000
volumes:
- ./data:/data
environment:
- START_OPTS=-Xmx4g -DAuthHandlers=io.deephaven.auth.AnonymousAuthenticationHandler
deephaven2:
image: ghcr.io/deephaven/server:latest
ports:
- 10000:10000
volumes:
- ./data:/data
environment:
- START_OPTS=-Xmx4g -Dauthentication.psk=YOUR_PASSWORD_HERE