Skip to main content

Package for sending (hardware) experiment requests across the network and receiving the results

Project description

Waverunner is a symmetrical client/server RPC tool

securely advertises and executes arbitrary remote python modules

server-side code:

create a script (let's call it batch-script.py) that looks like this:

import numpy
import fancyInstrumentControl
from waverunner import SecureMethod

@SecureMethod
def get_measurement(stimulus):
    return fancyInstrumentControl.pass(stimulus)

then run waverunner:

$ python -m waverunner \
     --srv-path /path/to/batch-script.py \
     --notify 123.345.543.2
     --password mybestfriendsgirlfriendisamediocresong

found batch-script.get_measurement
serving at 142.555.432.1
sending notifications to 123.345.543.2

waverunner will now serve 'batch-script.get_measurement()' and advertise to any waverunner that might be running at 123.345.543.2

client-side code:

from waverunner import Server

server = Server(
            password='mybestfriendsgirlfriendisamediocresong',
            user_ips='142.555.432.1')

request = (
    'batch-script.get_measurement',
    np.stack([np.random.randn(100) for i in range(100)]),
)

result = server.external_request('http://142.555.432.1', *request)
print(result)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Built Distribution

waverunner-0.2b6-py2.py3-none-any.whl (17.7 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page