Skip to main content

Subfork Python API

Project description

Subfork Python API

Quickstart | Basic Commands | Workers | Config File | Environments | Distribution

Subfork is the easiest way to build and deploy static sites and micro web apps. This package provides the Subfork Python API and command line interface.

Installation

The easiest way to install:

$ pip install -U subfork

Installing from source:

$ git clone https://github.com/subforkdev/subfork
$ cd subfork
$ pip install .

Setup

In order to authenticate with the Subfork API, you will first need to create a site and API access keys for your site at subfork.com.

$ export SUBFORK_ACCESS_KEY=<access key>
$ export SUBFORK_SECRET_KEY=<secret key>

Modify the subfork.yml config file at the root of your project or set $SUBFORK_CONFIG_FILE to the path to subfork.yml:

$ export SUBFORK_CONFIG_FILE=/etc/project/subfork.yml

Quickstart

To use the Subfork Python API you must first complete the configuration steps below. Then instantiate a client using the site domain and access keys:

import subfork

client = subfork.get_client()
site = client.site()

Getting pages:

pages = site.pages()  # all pages
page = site.get_page("index.html")  # get index.html

Getting data:

# get all of the 'bookings' for 'Sally'
params = [["guestid", "=", "Sally"]]
results = site.get_data("bookings").find(params)

Updating data:

# update the 'total' value for a booking
data = site.get_data("bookings").find_one(params)
data["total"] = 600.00
results = site.get_data("bookings").update(data["id"], data)

Basic Commands

To create a subfork.yml config file from existing html templates and static files:

$ subfork create -t <templates folder> -s <static folder>

where the templates folder is the folder containing all of the html files, and the static folder is the folder containing all of the static files (.jpg, .js, .css, etc). Be sure to update the values in the new subfork.yml if necessary.

To test a site locally using the dev server:

$ subfork run

To deploy and release a site:

$ subfork deploy -c "initial deployment" --release

To process queued tasks using workers defined in the config file:

$ subfork worker

Workers

Task workers are decentralized Python functions that poll task queues for new jobs. As new jobs are added to the queue, task workers pull them off and pass data to the specified Python function.

See the subfork.worker.test function for an example of a simple worker that takes jobs from the test queue and returns a string.

To run a worker that pulls jobs from the test queue and runs the test function:

$ subfork worker --queue test --func subfork.worker.test

Workers will automatically retry failed jobs.

Getting task results:

queue = site.get_queue("test")
task = queue.get_task(taskid)
results = task.get_results()

Creating new tasks:

task = queue.create_task({"t": 1})

Tasks and task data can be viewed on the tasks page of the subfork dashboard.

Config File

The subfork.yml config file contains required auth info, page templates, routes (or endpoints), static files and task worker definitions.

The example config file contains two endpoints and a worker:

# enter site domain (e.g. mysite.fork.io)
domain: ${SUBFORK_DOMAIN}

# enter site credentials here
access_key: ${SUBFORK_ACCESS_KEY}
secret_key: ${SUBFORK_SECRET_KEY}

# path to templates and static files
template_folder: templates
static_folder: static

# page template definitions
templates:
  index:
    route: /
    file: index.html
  user:
    route: /user/<username>
    file: user.html

# task worker definitions
workers:
  test:
    queue: test
    function: subfork.worker.test

Environments

Settings can be easily managed using envstack to manage environments. By default, subfork looks for a subfork.env environment file, but you can easily create different environments, for example a prod.env environment file, or a dev.env environment file:

$ envstack subfork -s SUBFORK_ACCESS_KEY=abc123 SUBFORK_SECRET_KEY=xyz456 -eo dev.env
$ ./dev.env -- subfork run

Access keys can be stored securely in an .env file (see instructions here for generating encryption keys):

$ envstack keys -eo secrets.env

Distribution

File distribution can be optionally managed using the dist.json file and installed using distman:

$ pip install -U distman
$ ./prod.env -- dist [OPTIONS]

Demo

See test.fork.io for an example of a simple demo site, or get the source code here:

$ git clone https://github.com/subforkdev/test.fork.io

Trademark Notice

Subfork and the Subfork logo are trademarks of Subfork.
The BSD 3-Clause License covers the source code but does not grant rights to use the Subfork name or logo. You may refer to Subfork in a descriptive way (e.g. “compatible with Subfork”), but you may not use Subfork trademarks in your own branding, project names, or domains without prior written permission. See TRADEMARKS.md for details.

Project details


Download files

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

Source Distribution

subfork-1.0.4.tar.gz (37.6 kB view details)

Uploaded Source

File details

Details for the file subfork-1.0.4.tar.gz.

File metadata

  • Download URL: subfork-1.0.4.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for subfork-1.0.4.tar.gz
Algorithm Hash digest
SHA256 9f1d9fe5e80d8023e2266441a942201430b8d1761c3ecaa73cfa53d65c755c13
MD5 4db023e983782f6f926bef776162bce1
BLAKE2b-256 fbc04adee634b6b98e97edd9800baa5f9ce9175a4922bf8f395c6f4f7407aa5b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page