Skip to main content

It's a robust webserver (http/ws) for hosting htag apps on the web (a process by user)

Project description

htagweb

Test

Package version

This "htagweb" module is the official way to expose htag's apps on the web.

ULTRA IMPORTANT ;-)

This module will be completly rewritten (for the 3rd time ;-)). And it will work, like in the past, as others classicals runners (tag instances will live, in separates processes). (state and session will remain too). Just need to test the new branch (it will use redys ;-) )

Important note On the web, the server can handle many clients : so, it's not possible to handle each tag instances per user. SO there are 1 limitation compared to classical htag runners which comes with htag.

  • there can be only one managed instance of a htag class, per user (it's the case in classical runners too)
  • and tag instances doesn't live as long as the runner lives (when you hit F5, it will be destroyed/recreated). So, keeping states must be done thru the tag.state / tag.root.state (which is the session of the user).

So developping a htag app which work the same on desktop and on the web, should manage its states in tag.state / tag.root.state ;-)

Features

  • based on starlette
  • multiple ways to handle sessions (file, mem, etc ...)
  • compatible with uvloop !!!
  • compatible with multiple gunicorn/uvicorn/webworkers !!!
  • compatible with tag.update()
  • works on gnu/linux, ios or windows !
  • real starlette session available (in tag.state, and starlette request.session)
  • compatible with oauth2 authent ( authlib )
  • 'parano mode' (can aes encrypt all communications between client & server ... to avoid mitm'proxies on ws exchanges)

Roadmap / futur

priority :

  • ci/cd test python>3.7 with shared_memory_dict
  • unittests on sessions.memory (won't work now)
  • better unittests on usot

futur:

  • ? replace starlette by fastapi ?
  • the double rendering (double init creation) is not ideal. But great for SEO bots. Perhaps I could find a better way (and let only one rendering, but how ?!) ?!
  • more unittests !!!
  • better logging !!!

Examples

A "hello world" could be :

from htag import Tag

class App(Tag.div):
    def init(self):
        self+= "hello world"

from htagweb import AppServer
AppServer( App ).run()

or, with gunicorn (in a server.py file, as following):

from htag import Tag

class App(Tag.div):
    def init(self):
        self+= "hello world"

from htagweb import AppServer
app=AppServer( App )

and run server :

gunicorn -w 4 -k uvicorn.workers.UvicornH11Worker -b localhost:8000 --preload server:app

See a more advanced example in examples folder

python3 examples/main.py

Standalone module can act as server

The module can act as "development server", providing a way to quickly run any htag class in a browser. And let you browse current *.py files in a browser.

$ python3 -m htagweb

htagweb will look for an "index:App" (a file index.py (wich contains a htag.Tag subclass 'App').), and if it can't found it : expose its own htag app to let user browse pythons files in the browser (/!\)

or

$ python3 -m htagweb main:App

if you want to point the "/" (home path) to a file main.py (wich contains a htag.Tag subclass 'App').

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

htagweb-0.10.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

htagweb-0.10.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file htagweb-0.10.0.tar.gz.

File metadata

  • Download URL: htagweb-0.10.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.2 Linux/6.2.0-1012-azure

File hashes

Hashes for htagweb-0.10.0.tar.gz
Algorithm Hash digest
SHA256 50227c59e3cc244ab4edac7a81079304a68825e055b87038189b45a4d4e2daec
MD5 c23e518c9148749b541e21532ce0d1a2
BLAKE2b-256 7f5a5547a342a70b4b52467b9d4c504bb28f2ac32c8c5de7c18382464c1386ab

See more details on using hashes here.

File details

Details for the file htagweb-0.10.0-py3-none-any.whl.

File metadata

  • Download URL: htagweb-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.2 Linux/6.2.0-1012-azure

File hashes

Hashes for htagweb-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3db9c4f839f11ec5dbfb4dd5a263b681eea26961922b7740c52f3ab95fecdde7
MD5 dc9b8d3d52e3ba2760b0ba6be162d913
BLAKE2b-256 dc2e05ecf67169d5219741fd30229a304817544a12e2b306669c75b9d122d716

See more details on using hashes here.

Supported by

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