【问题标题】:How to deploy CherryPy on pythonanywhere.com如何在 pythonanywhere.com 上部署 CherryPy
【发布时间】:2013-10-03 14:42:45
【问题描述】:

我有一个在 Flask 上开发的 python 应用程序。离线一切正常,我也尝试在 CherryPy 上成功部署。现在,我正在尝试在 www.pythonanywhere.com 上部署相同的内容。

这是我用于在 CherryPy 上部署 Flask 应用程序的 deploy.py

from cherrypy import wsgiserver
from appname import app

def initiate():
    app_list = wsgiserver.WSGIPathInfoDispatcher({'/appname': app})
    server = wsgiserver.CherryPyWSGIServer( ('http://username.pythonanywhere.com/'), app_list)
    try:
        server.start()
    except KeyboardInterrupt:
        server.stop()

print "Server initiated..."
initiate()
print "Ended"

我在 pythonanywhere.com 上创建了一个“手动配置”应用程序。 这是配置文件(username_pythonanywhere_com_wsgi.py):

import sys

path = '/home/username/appname'
if path not in sys.path:
    sys.path.append(path)

import deploy

deploy.initiate()

现在我很确定它“几乎可以工作”,因为在服务器日志中我可以看到我的“服务器已启动...”消息。

2013-09-27 09:57:16 +0000 username.pythonanywhere.com - *** Operational MODE: single process ***
Server initiated...

现在的问题是,当我尝试查看我的应用程序 username.pyhtonanywhere.com/about 时,它会超时。 我认为这是由于启动 CherryPy 服务器(在 deploy.py 中)时给定的端口不正确造成的。

谁能告诉我如何正确启动 CherryPy 服务器?

【问题讨论】:

  • 如果你作为 WSGI 部署,你不会运行 WSGIServer。您只需公开一个 WSGI 可调用对象。

标签: python flask cherrypy pythonanywhere


【解决方案1】:

乔·多尔蒂是对的。你想要在你的 wsgi 文件中更像这样的东西:

import sys
sys.path = [ <path to your web app> ] + sys.path
from cherrypy._cpwsgi import CPWSGIApp
from cherrypy._cptree import Application

from <your_web_app> import <your web app class> 
config_path = '<path to your cherrypy config>'
application = CPWSGIApp(
    Application(<your web app class>(), '', config = config_path)

我把所有应该基于你的特定应用的东西都卡在了s中。

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2020-04-30
    • 2015-05-09
    • 2015-01-14
    • 2014-09-09
    • 2014-06-28
    • 2020-03-20
    • 2010-11-30
    • 2014-02-26
    相关资源
    最近更新 更多