Я новичок в cherrypy и выбираю его для создания веб-сервисов для использования в других веб-приложениях. Я хочу запустить его с помощью apache2 и mod_wsgi. Я следовал за довольно old documentation, и пример hello world работал отлично.CherryPy: создать веб-сервис, работающий за apache2 (mod_wsgi)
Я сейчас смотрю на turotials и, конечно же, REST tutorial. Однако я не могу заставить его работать. Я получаю статус 500 и ошибки в журнале Apache:
TypeError: expose_() missing 1 required positional argument: 'func'
Чтобы даже получить, что далеко я приспособил сценарий из учебника похож на привет мир, например, для работы с Apache:
import sys
sys.stdout = sys.stderr
import random
import string
import cherrypy
cherrypy.config.update({'environment': 'embedded'})
@cherrypy.expose
class StringGeneratorWebService(object):
@cherrypy.tools.accept(media='text/plain')
def GET(self):
return cherrypy.session['mystring']
def POST(self, length=8):
some_string = ''.join(random.sample(string.hexdigits, int(length)))
cherrypy.session['mystring'] = some_string
return some_string
def PUT(self, another_string):
cherrypy.session['mystring'] = another_string
def DELETE(self):
cherrypy.session.pop('mystring', None)
conf = {
'/': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
'tools.sessions.on': True,
'tools.response_headers.on': True,
'tools.response_headers.headers': [('Content-Type', 'text/plain')],
}
}
cherrypy.quickstart(StringGeneratorWebService(), '/', conf)
Что я делаю неправильно?
Я не очень понимаю точку 'SCRIPT_NAME = None' – webKnjaZ
Это прямо от одного из своих учебников. Ошибка была 'cherrypy.quickstart' против' cherrypy.Application'. Подобным образом это работает, и downvote ошибочен для тех, кто имеет одинаковые проблемы. Примечание. Лично мне нужно было заставить это работать на мою гордость, но теперь я рекомендую выбрать другую структуру в целом, поскольку документация разрежена и часто устаревает. –
почему это было downvoted? – laserpython