web framework based on Asyncio stack
Project description
The Muffin
The Muffin – A web framework based on Asyncio stack. (early alpha)
Requirements
python >= 3.3
Installation
The Muffin should be installed using pip:
pip install muffin
Usage
See sources of example application.
Run example server:
$ make run
Configuration
Muffin gets configuration options from python files. By default the package tries to load a configuration from config module (config.py).
There are few ways to redifine configuration module:
Set configuration module in your app initialization:
app = muffin.Application('myapp', CONFIG='config.debug')
Set environment variable MUFFIN_CONFIG:
$ MUFFIN_CONFIG=settings_local muffin example.app:app run
Also you can define any options while initializing your application:
app = muffin.Application('myapp', DEBUG=True, ANY_OPTION='Here', ONE_MORE='Yes')
Base application options
Base Muffin options and default values:
# Configuration module 'CONFIG': 'config', # Enable debug mode 'DEBUG': False, # List of enabled plugins 'PLUGINS': ( 'muffin.plugins.manage:ManagePlugin', 'muffin.plugins.jade:JadePlugin', 'muffin.plugins.peewee:PeeweePlugin', 'muffin.plugins.session:SessionPlugin', ), # Setup static files in development 'STATIC_PREFIX': '/static', 'STATIC_ROOT': 'static',
CLI integration
Add the next lines to end of your application file:
if __name__ == '__main__': app.plugins.manage()
Run in your shell:
$ muffin path.to.your.module:app_object_name --help
Write a custom command
@app.plugins.manage.command def hello_world(option=None, boolean_option=False): """ Command help here. :param option: Option help here """ print('Hello world!')
Templates (Jade)
Use jade.render in your handlers:
@app.view('/') def hello(request): return (yield from app.plugins.jade.render( 'index.jade', user=request.session.get('user', 'anonimous')))
The syntax is:
jade.render(TEMPLATE_NAME, **CUSTOM_CONTEXT)
Add default context provider:
@jade.ctx_provider def my_context(): """ Could be a coroutine. """ return { ... }
Sessions
SQL (Peewee)
Migrations
Create migrations:
$ muffin example.app:app create [NAME]
Run migrations:
$ python example.app:app migrate [NAME]
Testing
Set module path to your Muffin Application in pytest configuration file or use command line option --muffin-app.
Example:
$ py.test -xs --muffin-app example.app:app
Deployment
Use muffin command. By example:
$ muffin example.app:app run --workers=4
See muffin {APP} run --help for more info.
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin/issues
Contributing
Development of The Muffin happens at: https://github.com/klen/muffin
Contributors
klen (Kirill Klenov)
License
Licensed under a MIT license (See LICENSE)
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
Hashes for muffin-0.0.24-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7a1e25aad89e76a4b6e616e028588396d0d641f39ee8939f9b9f52e2588ba29 |
|
MD5 | 6c7f9d1d89247fa445f5e9db6959e111 |
|
BLAKE2b-256 | eb8867cbc5ee8685571416581812a938bca522659449896c2be7ed8bda022e41 |