Skip to main content
Version: Python

subscribe

The subscribe method subscribes to a published remote table that matches the specified ticket.

note

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

ParameterTypeDescription
ticketbytes

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()
info

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