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.
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6193ca7e5b15c6f126ccafcb94278da1e8db39a3049f00f2cdf70032b764e22 |
|
MD5 | b0c791a8003eadaa0d13683387add9f9 |
|
BLAKE2b-256 | 6dc84e0fe837341409832769335d355cd3f61cc7c714f6306791455ae3eac152 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0455e1b2bee958da6a34f1b510502240be156ad4a6149e4d6bbd2537c27f487 |
|
MD5 | de4c757d02429397118a00fd8ed7bced |
|
BLAKE2b-256 | 264658712e7a98229ddfdc040368bb9b339d5d7e2791785e27064ef7fe9137cb |