archive
/
lantern
Archived
1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Jake Howard ec4b40bb81 Dont need so many workers 2017-04-16 10:46:59 +01:00
examples Add some examples 2017-04-11 22:14:14 +01:00
lantern Dont need so many workers 2017-04-16 10:46:59 +01:00
.gitignore Init python project 2017-04-11 08:46:31 +01:00
README.md Write docs 2017-04-16 10:46:07 +01:00
circle.yml Init tests 2017-04-11 09:36:34 +01:00
dev-requirements.txt Init tests 2017-04-11 09:36:34 +01:00
setup.py Add error response 2017-04-11 13:46:53 +01:00

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