Как развернуть CherryPy на pythonanywhere.com

У меня есть приложение Python, разработанное на Flask. Все отлично работает в автономном режиме, я также успешно попытался развернуть на CherryPy. Теперь я пытаюсь развернуть то же самое на www.pythonanywhere.com.

Вот файл deploy.py, который я использую для развертывания приложения Flask на CherryPy.

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?


person KBN    schedule 27.09.2013    source источник
comment
Если вы развертываетесь как WSGI, вы не запускаете WSGIServer. Вы просто предоставляете вызываемый объект WSGI.   -  person Joe Doherty    schedule 27.09.2013


Ответы (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.

person Glenn    schedule 30.09.2013