2016-08-04 2 views
0

Je suis en train de deploy my Twisted application using .tac files and twistdFlask déployé avec twistd: Échec de chargement de l'application: objet 'NoneType' n'a pas d'attribut 'startswith'

J'ai essayé de le déployer avec la ligne de commande:

twistd -y service.tac

J'ai l'erreur:

...

application = getApplication(self.config, passphrase) 

--- <exception caught here> --- File "/usr/local/lib/python2.7/dist-packages/twisted/application/app.py", line 450, in getApplication application = service.loadApplication(filename, style, passphrase) File "/usr/local/lib/python2.7/dist-packages/twisted/application/service.py", line 411, in loadApplication passphrase) File "/usr/local/lib/python2.7/dist-packages/twisted/persisted/sob.py", line 224, in loadValueFromFile eval(codeObj, d, d) File "service.tac", line 54, in <module>

File "/usr/lib/python2.7/posixpath.py", line 61, in isabs return s.startswith('/')

exceptions.AttributeError: 'NoneType' object has no attribute 'startswith'

Failed to load application: 'NoneType' object has no attribute 'startswith'

Mon fichier service.tac est:

from flask import Flask app = Flask(__name__)

Répondre

0

Votre demande import_name ne peut pas être identifié correctement * .tac fichier. Si vous créez une application Flask dans un fichier * .py et que vous l'importez dans * .tac, cela fonctionnera très bien.

Mais vous avez également besoin d'une autre liste de instructions pour déployer l'application Flask via twistd. L'exemple minimal ressemble à ceci:

from twisted.application import internet, service 
from twisted.web.server import Site 
from twisted.web.wsgi import WSGIResource 
from twisted.internet import reactor 

from my_flask_module import my_flask_app 

application = service.Application('myapplication') 
service = service.IServiceCollection(application) 

flask_resource = WSGIResource(reactor, reactor.getThreadPool(), my_flask_app) 
flask_site = Site(flask_resource) 
internet.TCPServer(8000, flask_site).setServiceParent(service)