Skip to main content

Run aiohttp server in subprocess ,automatically reload while dependencies/statics modified , debugtoolbar included. - GoodManWEN/aiohttp-debugmode

Project description

aiohttp-debugmode

This package helps you easily start a aiohttp develpment server in subprocess ,everytime dependencies/statics are modified ,daemon process will automatically reload server thus helps you automation your workflow. Aiohttp-debugtoolbar included.

fury licence pyversions Publish build

  • Based on watchdog.
  • Works on Python3.7+
  • aiohttp-debugtoolbar included ,thus you can get a full report of traceback if exception raised.

(* Screenshot from aio-libs/aiohttp-debugtoolbar *)

Install

pip install aiohttp-debugmode

Usage

quick_start.py # here's a demo script from aiohttp.doc\quickstart

from aiohttp import web
routes = web.RouteTableDef()

@routes.get('/')
async def hello(request):
    return web.Response(text="Hello, world")

app = web.Application()
app.add_routes(routes)
web.run_app(app)

Simply modify severl lines like this

# Add import
from aiohttp_debugmode import Debugmode

# Let Debugmode take over control of run_app
Debugmode.run_app(app)

By default ,templates & static floder is added to observing list of watchdog. You can manually set observe file/floder using append_observe.

Debugmode.append_observe(['other/login.html' ,'assets'])

If you need some kind of process when a aiohttp server starts up:

def stup():
	... # do something

Debugmode.on_startup(stup) # accepts callable.

Examples

aiohttp-debugmode with Vue

Assume that you are usiung vue-cli and have a directory structure like this:

...
├── Project
│   ├── static
│   ├── templates
│   ├── app.py               # aiohttp app entry
│   └── frontend             # vue frontend folder
│       ├── dist             # webpack output directory
│       │   ├── css
│       │   ├── js
│       │   └── index.html
│       ├── node_modules
│       │   └── ...
│       ├── src              # vue source
│       │   └── ...
│       └── vue.config.js
│   └── ...

Assume that webpack outputs built file into /Project/frontend/dist floder while your aiohttp app collects templates & statics from /Project/templates & /Project/static folder.

Here's a sample code:

from aiohttp import web
from aiohttp_debugmode import Debugmode
import aiohttp_jinja2

# Pretended doing some tempate rander stuff.
# @aiohttp_jinja2.template('index.html')
async def hello(request):
    return web.Response(text="Randered.") 

# Debugtoolbar included thus you can get 
# a full report of traceback.
async def error(request):
    raise Exception('Testing.')

app = web.Application()
app.router.add_route('GET', '/', hello)
app.router.add_route('GET', '/err', error)
app.add_routes([web.static('/', 'static')])

def initialize():
    import shutil , os , glob
    # You may use os.path.abspath to get absolute path in some situation.
    if os.path.exists('frontend\dist\index.html'):
        shutil.move('frontend\dist\index.html' , 'templates')
        try:
            shutil.rmtree(filepath)
            os.mkdir(filepath)
            for filepath in glob.glob('frontend\dist\*'):
                shutil.move(filepath , 'static')
        except Exception as e:
            raise e

Debugmode.append_observe(['frontend\dist']) # backslashes on windows.
Debugmode.on_startup(initialize)
# Debugmode takes over run_app instead of web.run_app
Debugmode.run_app(app , host = '127.0.0.1' , port = 8080)

Thus every time you run npm run build ,debugmode will catch file modified event ,init file directory and restart aiohttp server with new generated html/js/css file.

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

aiohttp-debugmode-0.2.1.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

aiohttp_debugmode-0.2.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file aiohttp-debugmode-0.2.1.tar.gz.

File metadata

  • Download URL: aiohttp-debugmode-0.2.1.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for aiohttp-debugmode-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d6193ca7e5b15c6f126ccafcb94278da1e8db39a3049f00f2cdf70032b764e22
MD5 b0c791a8003eadaa0d13683387add9f9
BLAKE2b-256 6dc84e0fe837341409832769335d355cd3f61cc7c714f6306791455ae3eac152

See more details on using hashes here.

File details

Details for the file aiohttp_debugmode-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: aiohttp_debugmode-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for aiohttp_debugmode-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b0455e1b2bee958da6a34f1b510502240be156ad4a6149e4d6bbd2537c27f487
MD5 de4c757d02429397118a00fd8ed7bced
BLAKE2b-256 264658712e7a98229ddfdc040368bb9b339d5d7e2791785e27064ef7fe9137cb

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