archive
/
lantern
Archived
1
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
Jake Howard ec4b40bb81 Dont need so many workers 6 years ago
examples Add some examples 6 years ago
lantern Dont need so many workers 6 years ago
.gitignore Init python project 6 years ago
README.md Write docs 6 years ago
circle.yml Init tests 6 years ago
dev-requirements.txt Init tests 6 years ago
setup.py Add error response 6 years ago

README.md

lantern

CircleCI

Write a web server in almost any language.

Usage

$ lantern --help
usage: lantern [-h] [--port PORT] handler

positional arguments:
handler      Executable to run

optional arguments:
-h, --help   show this help message and exit
--port PORT  Port to listen on

handler should be your executable program. It should be executable without any additional arguments (eg ./handler.py).

How it works

When a request is sent to lantern, the handler program is called, and request data passed through stdin. Anything passed to stdout will be returned to the client. This data must be standard text / HTML.

You can't really write it in a language that doesn't support reading from stdin / writing to stdout, but almost all languages support this.

Request Data

Request data is fetched from sanic, and serialized to JSON. THe exact keys serialized can be found in lantern/request.py, and descriptions can be found in the sanic docs.

Additionally, there's also the useragent plugin installed, which adds useragent data to the request at useragent.

Why

I build this simply for testing, I wanted to have a play around with sanic, and needed something to help me do this project.

"Can I use this in production?"

Technically yes, there's nothing stopping you, But please, Please don't!

Whilst thanks to sanic it's super fast, it's not designed to be secure, scalable, or even particularly stable.

If you want to use a language in production, use a web framework in that language, eg Django or Hyper.

Examples

See the examples/ directory for some basic examples. eg:

$ lantern examples/simple.sh