10
votes

Interface Web pour une application tordue

J'ai une application écrite dans torsadée et je souhaite ajouter une interface Web pour contrôler et surveiller. J'aurai besoin de nombreuses pages dynamiques montrant l'état actuel et la configuration, j'ai donc espéré un cadre qui offre au moins une langue de modèles avec héritage et un routage de base.

Puisque j'utilise de toute façon torsadée, je voulais utiliser twisthed.web - mais c'est une langue de modèles est trop basique et il semble que le seul cadre, Neuvouve est assez mort (c'est KnockPad Mais la page d'accueil et wiki sont en panne et je ne trouve aucune documentation).

Alors, quelles sont mes options?

  • y a-t-il un autre Twisted.Web Cadre basé?
  • Y a-t-il d'autres cadres qui fonctionnent avec le réacteur de Twisted?
  • Devrais-je juste obtenir un cadre Web (je pense que web.py ou flacon) et le gérer dans un fil?

    Merci pour vos réponses.


1 commentaires

@ Jean-Paul Calderone - Je suis sûr que Neuvow est gentil; Je suis impressionné par tous les projets Divmod. Mais avec Divmod.org, il est vraiment difficile pour un débutant de trouver une documentation.


3 Réponses :


3
votes

Neuvow est le choix évident. Malheureusement, le matériel Divmod Web Server et le matériel de serveur de sauvegarde a échoué en même temps. Ils tentent de récupérer les données et de le publier sur LaunchPad, mais cela peut prendre un certain temps.

Vous pouvez également utiliser essentiellement tout module de modèle existant avec tordue.Web; Jinja2 vient à l'esprit.


0 commentaires

14
votes

Puisque Nevow est toujours en panne et que je ne voulais pas écrire un routage et un soutien pour une émission de modèles moi-même, j'ai fini par utiliser de la fiole. Il s'est avéré être assez facile:

# make a Flask app
from flask import Flask, render_template, g
app = Flask(__name__)
@app.route("/")
def index():
    return render_template("index.html")

# run in under twisted through wsgi
from twisted.web.wsgi import WSGIResource
from twisted.web.server import Site

resource = WSGIResource(reactor, reactor.getThreadPool(), app)
site = Site(resource)

# bind it etc
# ...


4 commentaires

Pourriez-vous s'il vous plaît élaborer sur lier-le etc s'il vous plaît? Comme pour que nous aurions un exemple complet contenus, runnable ... pour ceux qui ne sont pas si bien versés dans Twisted :)


@exhuma réacteur.listentcp (80, site) liera l'application de la fiole au port 80


C'est deux ans plus tard maintenant. La fiole et tordu sont vivants et bien, et je compte faire quelque chose de similaire. Est-ce que cela finit par travailler pour vous ou avez-vous rencontré des problèmes?


Les allignestallbacks peuvent-ils être mélangés avec du ballon lors de l'exécution comme celle-ci?



6
votes

Vous pouvez le lier directement dans le réacteur comme l'exemple ci-dessous:

static = Static.File("/path/folder")
static.processors = {'.py': script.PythonScript,
                 '.rpy': script.ResourceScript}
static.indexNames = ['index.rpy', 'index.html', 'index.htm']

root = Root()
root.putChild('static', static)

reactor.listenTCP(5050, server.Site(root))
reactor.run()


0 commentaires