2016-08-04 21 views
0

我想deploy my Twisted application using .tac files and twistd瓶部署twistd來:無法加載應用程序:「NoneType」對象有沒有屬性「startswith」

我試圖用命令行進行部署:

twistd -y service.tac

我有錯誤:

...

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'

我service.tac文件是:

from flask import Flask app = Flask(__name__)

回答

0

您的應用程序IMPORT_NAME無法正確在* .tac確定文件。如果您在* .py文件中創建燒瓶應用程序並將它導入* .tac,它將工作得很好。

但是您還需要另一個instructions列表來通過twistd部署Flask應用程序。最小示例如下所示:

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) 
相關問題