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.
2017-04-16 10:46:07 +01:00

2.0 KiB



Write a web server in almost any language.


$ 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 ./

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/, 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.


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.


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

$ lantern examples/