lol.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import os
from twisted.application import service
from twisted.web import server, static
from twisted.web.resource import Resource
from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor
from flask.views import MethodView
from flask import Flask, render_template
 
SECRET_KEY = 'whhhaat'
 
app = Flask(__name__)
app.config.from_object(__name__)
 
class IndexHandler(MethodView):
  def get(self):
    return render_template('index.html')
 
app.add_url_rule('/', view_func=IndexHandler.as_view('index'))
 
class Root(Resource):
  wsgi = WSGIResource(reactor, reactor.getThreadPool(), app)
 
  def getChild(self, path, request):
    request.prepath.pop()
    request.postpath.insert(0, path)
    return self.wsgi
 
  def render(self, request):
    return self.wsgi.render(request)
 
application = service.Application('whhhaat')
root = Root()
static_dir = os.path.join(os.path.abspath(__file__), 'static')
resource = static.File(static_dir)
root.putChild('static', resource)
site = server.Site(root)

twistd -n web --wsgi lol.app