API Documentation¶
This part of the documentation covers the interfaces used to develop with pyngrok
.
Main ngrok
Interface¶
-
class
pyngrok.ngrok.
NgrokTunnel
(data, pyngrok_config, api_url)[source]¶ Bases:
object
An object containing information about a
ngrok
tunnel.Variables: - data (dict) – The original tunnel data.
- name (str) – The name of the tunnel.
- proto (str) – The protocol of the tunnel.
- uri (str) – The tunnel URI, a relative path that can be used to make requests to the
ngrok
web interface. - public_url (str) – The public
ngrok
URL. - config (dict) – The config for the tunnel.
- metrics (dict) – Metrics for the tunnel.
- pyngrok_config (PyngrokConfig) – The
pyngrok
configuration to use when interacting with thengrok
. - api_url (str) – The API URL for the
ngrok
web interface.
-
pyngrok.ngrok.
api_request
(url, method='GET', data=None, params=None, timeout=4)[source]¶ Invoke an API request to the given URL, returning JSON data from the response.
One use for this method is making requests to
ngrok
tunnels:from pyngrok import ngrok public_url = ngrok.connect() response = ngrok.api_request("{}/some-route".format(public_url), method="POST", data={"foo": "bar"})
Another is making requests to the
ngrok
API itself:from pyngrok import ngrok api_url = ngrok.get_ngrok_process().api_url response = ngrok.api_request("{}/api/requests/http".format(api_url), params={"tunnel_name": "foo"})
Parameters: Returns: The response from the request.
Return type:
-
pyngrok.ngrok.
connect
(addr=None, proto=None, name=None, pyngrok_config=None, **options)[source]¶ Establish a new
ngrok
tunnel for the given protocol to the given port, returning an object representing the connected tunnel.If a tunnel definition in ngrok’s config file matches the given
name
, it will be loaded and used to start the tunnel. Whenname
isNone
and a “pyngrok-default” tunnel definition exists inngrok
’s config, it will be loaded and use. Anykwargs
passed asoptions
will override properties from the loaded tunnel definition.If
ngrok
is not installed atPyngrokConfig
’sngrok_path
, calling this method will first download and installngrok
.pyngrok
is compatible withngrok
v2 and v3, but by default it will install v3. To install v2 instead, setngrok_version
inPyngrokConfig
:If
ngrok
is not running, calling this method will first start a process withPyngrokConfig
.Note
ngrok
v2’s default behavior forhttp
when no additional properties are passed is to open two tunnels, onehttp
and onehttps
. This method will return a reference to thehttp
tunnel in this case. If only a single tunnel is needed, passbind_tls=True
and a reference to thehttps
tunnel will be returned.Parameters: - addr (str, optional) – The local port to which the tunnel will forward traffic, or a local directory or network address, defaults to “80”.
- proto (str, optional) – A valid tunnel protocol, defaults to “http”.
- name (str, optional) – A friendly name for the tunnel, or the name of a ngrok tunnel definition to be used.
- pyngrok_config (PyngrokConfig, optional) – A
pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
. - options (dict, optional) – Remaining
kwargs
are passed as configuration for the ngrok tunnel.
Returns: The created
ngrok
tunnel.Return type:
-
pyngrok.ngrok.
disconnect
(public_url, pyngrok_config=None)[source]¶ Disconnect the
ngrok
tunnel for the given URL, if open.Parameters: - public_url (str) – The public URL of the tunnel to disconnect.
- pyngrok_config (PyngrokConfig, optional) – A
pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.
-
pyngrok.ngrok.
get_ngrok_process
(pyngrok_config=None)[source]¶ Get the current
ngrok
process for the given config’sngrok_path
.If
ngrok
is not installed atPyngrokConfig
’sngrok_path
, calling this method will first download and installngrok
.If
ngrok
is not running, calling this method will first start a process withPyngrokConfig
.Use
is_process_running
to check if a process is running without also implicitly installing and starting it.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.Returns: The ngrok
process.Return type: NgrokProcess
-
pyngrok.ngrok.
get_tunnels
(pyngrok_config=None)[source]¶ Get a list of active
ngrok
tunnels for the given config’sngrok_path
.If
ngrok
is not installed atPyngrokConfig
’sngrok_path
, calling this method will first download and installngrok
.If
ngrok
is not running, calling this method will first start a process withPyngrokConfig
.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.Returns: The active ngrok
tunnels.Return type: list[NgrokTunnel]
-
pyngrok.ngrok.
get_version
(pyngrok_config=None)[source]¶ Get a tuple with the
ngrok
andpyngrok
versions.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.Returns: A tuple of (ngrok_version, pyngrok_version)
.Return type: tuple
-
pyngrok.ngrok.
install_ngrok
(pyngrok_config=None)[source]¶ Download, install, and initialize
ngrok
for the given config. Ifngrok
and its default config is already installed, calling this method will do nothing.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.
-
pyngrok.ngrok.
kill
(pyngrok_config=None)[source]¶ Terminate the
ngrok
processes, if running, for the given config’sngrok_path
. This method will not block, it will just issue a kill request.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.
-
pyngrok.ngrok.
main
()[source]¶ Entry point for the package’s
console_scripts
. This initializes a call from the command line and invokesrun
.This method is meant for interacting with
ngrok
from the command line and is not necessarily compatible with non-blocking API methods. For that, usengrok
’s interface methods (likeconnect
), or useget_process
.
-
pyngrok.ngrok.
run
(args=None, pyngrok_config=None)[source]¶ Ensure
ngrok
is installed at the default path, then callrun_process
.This method is meant for interacting with
ngrok
from the command line and is not necessarily compatible with non-blocking API methods. For that, usengrok
’s interface methods (likeconnect
), or useget_process
.Parameters: - args (list[str], optional) – Arguments to be passed to the
ngrok
process. - pyngrok_config (PyngrokConfig, optional) – A
pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.
- args (list[str], optional) – Arguments to be passed to the
-
pyngrok.ngrok.
set_auth_token
(token, pyngrok_config=None)[source]¶ Set the
ngrok
auth token in the config file, enabling authenticated features (for instance, more concurrent tunnels, custom subdomains, etc.).If
ngrok
is not installed atPyngrokConfig
’sngrok_path
, calling this method will first download and installngrok
.Parameters: - token (str) – The auth token to set.
- pyngrok_config (PyngrokConfig, optional) – A
pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.
-
pyngrok.ngrok.
update
(pyngrok_config=None)[source]¶ Update
ngrok
for the given config’sngrok_path
, if an update is available.Parameters: pyngrok_config (PyngrokConfig, optional) – A pyngrok
configuration to use when interacting with thengrok
binary, overridingget_default
.Returns: The result from the ngrok
update.Return type: str
Process Management¶
-
class
pyngrok.process.
NgrokLog
(line)[source]¶ Bases:
object
An object containing a parsed log from the
ngrok
process.Variables:
-
class
pyngrok.process.
NgrokProcess
(proc, pyngrok_config)[source]¶ Bases:
object
An object containing information about the
ngrok
process.Variables: - proc (subprocess.Popen) – The child process that is running
ngrok
. - pyngrok_config (PyngrokConfig) – The
pyngrok
configuration to use withngrok
. - api_url (str) – The API URL for the
ngrok
web interface. - logs (list[NgrokLog]) – A list of the most recent logs from
ngrok
, limited in size tomax_logs
. - startup_error (str) – If
ngrok
startup fails, this will be the log of the failure.
-
_log_line
(line)[source]¶ Parse, log, and emit (if
log_event_callback
inPyngrokConfig
is registered) the given log line.Parameters: line (str) – The line to be processed. Returns: The parsed log. Return type: NgrokLog
-
_log_startup_line
(line)[source]¶ Parse the given startup log line and use it to manage the startup state of the
ngrok
process.Parameters: line (str) – The line to be parsed and logged. Returns: The parsed log. Return type: NgrokLog
-
healthy
()[source]¶ Check whether the
ngrok
process has finished starting up and is in a running, healthy state.Returns: True
if thengrok
process is started, running, and healthy.Return type: bool
-
start_monitor_thread
()[source]¶ Start a thread that will monitor the
ngrok
process and its logs until it completes.If a monitor thread is already running, nothing will be done.
-
stop_monitor_thread
()[source]¶ Set the monitor thread to stop monitoring the
ngrok
process after the next log event. This will not necessarily terminate the thread immediately, as the thread may currently be idle, rather it sets a flag on the thread telling it to terminate the next time it wakes up.This has no impact on the
ngrok
process itself, onlypyngrok
’s monitor of the process and its logs.
- proc (subprocess.Popen) – The child process that is running
-
pyngrok.process.
_start_process
(pyngrok_config)[source]¶ Start a
ngrok
process with no tunnels. This will start thengrok
web interface, against which HTTP requests can be made to create, interact with, and destroy tunnels.Parameters: pyngrok_config (PyngrokConfig) – The pyngrok
configuration to use when interacting with thengrok
binary.Returns: The ngrok
process.Return type: NgrokProcess
-
pyngrok.process.
_validate_path
(ngrok_path)[source]¶ Validate the given path exists, is a
ngrok
binary, and is ready to be started, otherwise raise a relevant exception.Parameters: ngrok_path (str) – The path to the ngrok
binary.
-
pyngrok.process.
capture_run_process
(ngrok_path, args)[source]¶ Start a blocking
ngrok
process with the binary at the given path and the passed args. When the process returns, so will this method, and the captured output from the process along with it.This method is meant for invoking
ngrok
directly (for instance, from the command line) and is not necessarily compatible with non-blocking API methods. For that, useget_process
.Parameters: Returns: The output from the process.
Return type:
-
pyngrok.process.
get_process
(pyngrok_config)[source]¶ Get the current
ngrok
process for the given config’sngrok_path
.If
ngrok
is not running, calling this method will first start a process withPyngrokConfig
.Parameters: pyngrok_config (PyngrokConfig) – The pyngrok
configuration to use when interacting with thengrok
binary.Returns: The ngrok
process.Return type: NgrokProcess
-
pyngrok.process.
is_process_running
(ngrok_path)[source]¶ Check if the
ngrok
process is currently running.Parameters: ngrok_path (str) – The path to the ngrok
binary.Returns: True
ifngrok
is running from the given path.
-
pyngrok.process.
kill_process
(ngrok_path)[source]¶ Terminate the
ngrok
processes, if running, for the given path. This method will not block, it will just issue a kill request.Parameters: ngrok_path (str) – The path to the ngrok
binary.
-
pyngrok.process.
run_process
(ngrok_path, args)[source]¶ Start a blocking
ngrok
process with the binary at the given path and the passed args.This method is meant for invoking
ngrok
directly (for instance, from the command line) and is not necessarily compatible with non-blocking API methods. For that, useget_process
.Parameters:
-
pyngrok.process.
set_auth_token
(pyngrok_config, token)[source]¶ Set the
ngrok
auth token in the config file, enabling authenticated features (for instance, more concurrent tunnels, custom subdomains, etc.).Parameters: - pyngrok_config (PyngrokConfig) – The
pyngrok
configuration to use when interacting with thengrok
binary. - token (str) – The auth token to set.
- pyngrok_config (PyngrokConfig) – The
Configuration¶
-
class
pyngrok.conf.
PyngrokConfig
(ngrok_path=None, config_path=None, auth_token=None, region=None, monitor_thread=True, log_event_callback=None, startup_timeout=15, max_logs=100, request_timeout=4, start_new_session=False, ngrok_version='v3')[source]¶ Bases:
object
An object containing
pyngrok
’s configuration for interacting with thengrok
binary. All values are optional when it is instantiated, and default values will be used for parameters not passed.Use
get_default
andset_default
to interact with the defaultpyngrok_config
, or pass another instance of this object as thepyngrok_config
keyword arg to most methods in thengrok
module to override the default.from pyngrok import conf, ngrok # Here we update the entire default config pyngrok_config = conf.PyngrokConfig(ngrok_path="/usr/local/bin/ngrok") conf.set_default(pyngrok_config) # Here we update just one variable in the default config conf.get_default().ngrok_path = "/usr/local/bin/ngrok" # Here we leave the default config as-is and pass an override pyngrok_config = conf.PyngrokConfig(ngrok_path="/usr/local/bin/ngrok") ngrok.connect(pyngrok_config=pyngrok_config)
Variables: - ngrok_path (str) – The path to the
ngrok
binary, defaults to the value in conf.DEFAULT_NGROK_PATH - config_path (str) – The path to the
ngrok
config, defaults toNone
andngrok
manages it. - auth_token (str) – An authtoken to pass to commands (overrides what is in the config).
- region (str) – The region in which
ngrok
should start. - monitor_thread (bool) – Whether
ngrok
should continue to be monitored (for logs, etc.) after startup is complete. - log_event_callback (types.FunctionType) – A callback that will be invoked each time
ngrok
emits a log.monitor_thread
must be set toTrue
or the function will stop being called afterngrok
finishes starting. - startup_timeout (int) – The max number of seconds to wait for
ngrok
to start before timing out. - max_logs (int) – The max number of logs to store in
NgrokProcess
’slogs
variable. - request_timeout (float) – The max timeout when making requests to
ngrok
’s API. - start_new_session (bool) – Passed to
subprocess.Popen
when launchingngrok
. (Python 3 and POSIX only) - ngrok_version (str) – The major version of
ngrok
installed.
- ngrok_path (str) – The path to the
-
pyngrok.conf.
get_default
()[source]¶ Get the default config to be used with methods in the
ngrok
module. To override the default individually, thepyngrok_config
keyword arg can also be passed to most of these methods, or set a new default config withset_default
.Returns: The default pyngrok_config
.Return type: PyngrokConfig
-
pyngrok.conf.
set_default
(pyngrok_config)[source]¶ Set a new default config to be used with methods in the
ngrok
module. To override the default individually, thepyngrok_config
keyword arg can also be passed to most of these methods.Parameters: pyngrok_config (PyngrokConfig) – The new pyngrok_config
to be used by default.
ngrok
Installer¶
-
pyngrok.installer.
_download_file
(url, retries=0, **kwargs)[source]¶ Download a file to a temporary path and emit a status to stdout (if possible) as the download progresses.
Parameters: - url (str) – The URL to download.
- retries (int, optional) – The retry attempt index, if download fails.
- kwargs (dict, optional) – Remaining
kwargs
will be passed tourllib.request.urlopen
.
Returns: The path to the downloaded temporary file.
Return type:
-
pyngrok.installer.
_install_ngrok_zip
(ngrok_path, zip_path)[source]¶ Extract the
ngrok
zip file to the given path.Parameters:
-
pyngrok.installer.
get_default_config
(ngrok_version)[source]¶ Get the default config params for the given major version of
ngrok
.Parameters: ngrok_version (str, optional) – The major version of ngrok
installed.Returns: The default config. Return type: dict
-
pyngrok.installer.
get_ngrok_bin
()[source]¶ Get the
ngrok
executable for the current system.Returns: The name of the ngrok
executable.Return type: str
-
pyngrok.installer.
get_ngrok_config
(config_path, use_cache=True, ngrok_version='v2')[source]¶ Get the
ngrok
config from the given path.Parameters: Returns: The
ngrok
config.Return type:
-
pyngrok.installer.
install_default_config
(config_path, data=None, ngrok_version='v2')[source]¶ Install the given data to the
ngrok
config. If a config is not already present for the given path, create one. Before saving new data to the default config, validate that they are compatible withpyngrok
.Parameters:
-
pyngrok.installer.
install_ngrok
(ngrok_path, ngrok_version='v2', **kwargs)[source]¶ Download and install the latest
ngrok
for the current system, overwriting any existing contents at the given path.Parameters: - ngrok_path (str) – The path to where the
ngrok
binary will be downloaded. - ngrok_version (str, optional) – The major version of
ngrok
to be installed. - kwargs (dict, optional) – Remaining
kwargs
will be passed to_download_file
.
- ngrok_path (str) – The path to where the
Exceptions¶
-
exception
pyngrok.exception.
PyngrokError
[source]¶ Bases:
Exception
Raised when a general
pyngrok
error has occurred.
-
exception
pyngrok.exception.
PyngrokNgrokError
(error, ngrok_logs=None, ngrok_error=None)[source]¶ Bases:
pyngrok.exception.PyngrokError
Raised when an error occurs interacting directly with the
ngrok
binary.Variables:
-
exception
pyngrok.exception.
PyngrokNgrokHTTPError
(error, url, status_code, message, headers, body)[source]¶ Bases:
pyngrok.exception.PyngrokNgrokError
Raised when an error occurs making a request to the
ngrok
web interface. Thebody
contains the error response received fromngrok
.Variables: - error (str) – A description of the error being thrown.
- url (str) – The request URL that failed.
- status_code (int) – The response status code from
ngrok
. - message (str) – The response message from
ngrok
. - headers (dict[str, str]) – The request headers sent to
ngrok
. - body (str) – The response body from
ngrok
.
-
exception
pyngrok.exception.
PyngrokNgrokInstallError
[source]¶ Bases:
pyngrok.exception.PyngrokError
Raised when an error has occurred while downloading and installing the
ngrok
binary.
-
exception
pyngrok.exception.
PyngrokNgrokURLError
(error, reason)[source]¶ Bases:
pyngrok.exception.PyngrokNgrokError
Raised when an error occurs when trying to initiate an API request.
Variables:
-
exception
pyngrok.exception.
PyngrokSecurityError
[source]¶ Bases:
pyngrok.exception.PyngrokError
Raised when a
pyngrok
security error has occurred.