Ich habe eine Pyramiden-Anwendung unter Apache mit mod_wsgi ausgeführt. Ich plane, von Apache zu Cherrypy zu wandern. Ich kann statische Seite der bestehenden Webanwendung mit Cherrypy laden. Aber für jede AJAX-Anfrage bekomme ich den Fehler Ressource nicht gefunden (404). Irgendwelche Hinweise ??Cherrypy und Pyramid Integration
Dank
30-Mar-2016
Hier Codestruktur
MyProject
|
cherry_wsgi.py (creates wsgi app object)
cherry_server.py (starts cherrypy server using app object from cherry_wsgi.py)
development.ini
myproject
|
__init__.py (Scans sub-folders recursively)
views.py
mydata
|
__init__.py
data
|
__init__.py (Added route for getdata)
views.py (implementation of getdata)
|
myclient
|
index.html (AJAX query)
Inhalt myclient/index.html
<html>
<head>
<meta charset="utf-8">
<title>HOME UI</title>
</head>
<body>
<button id="submit">Give it now!</button>
<script src="./jquery-2.1.3.min.js"></script>
<script>$("#submit").on('click', function()
{
$.ajax(
{
type: "GET",
async: false,
url: "../myproject/data/getdata",
success: function (data)
{
console.log("LED On");
},
error: function()
{
console.error("ERROR");
}
});
});</script></body></html>
Datei myproject/__init__.py
from pyramid.config import Configurator
from pyramid.renderers import JSONP
import os
import logging
def includeme(config):
""" If include function exists, write this space.
"""
pass
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application."""
config = Configurator(settings=settings)
config.add_renderer('jsonp', JSONP(param_name='callback'))
config.include(includeme)
directory = "/home/redmine/Downloads/MyProject/myproject/mydata/"
for root,dir,files in os.walk(directory):
if root == directory:# Walk will return all sublevels.
for dirs in dir: #This is a tuple so we need to parse it
config.include('myproject.mydata.' + str(dirs), route_prefix='/' + str(dirs))
config.add_static_view('static', 'prototype', cache_max_age=3600)
config.scan()
return config.make_wsgi_app()
Datei myproject/views.py
from pyramid.view import view_config
Datei myproject/mydata/__init__.py
import data
Datei mproject/mydata/data/__init__.py
from pyramid.config import Configurator
def includeme(config):
config.add_route('get_data', 'getdata', xhr=True)
def main(global_config, **settings):
print 'hello'
config = Configurator(settings=settings)
config.include(includeme, route_prefix='/data')
config.add_static_view('static', 'prototype', cache_max_age=3600)
config.scan('data')
return config.make_wsgi_app()
Datei mproject/mydata/data/views.py
from pyramid.view import view_config
import json
@view_config(route_name='get_data', xhr=True, renderer='jsonp')
def get_data(request):
return "{'firstName' : 'John'}"
Datei cherry_wsgi.py
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.paster import get_app
config = Configurator()
app = get_app('development.ini', 'main')
Datei cherry_server.py
from cherry_wsgi import app
import cherrypy
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': '/home/redmine/Downloads/MyProject/'
},
'/myclient': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './myclient'
}
}
if __name__ == '__main__':
cherrypy.tree.mount(app, "/", conf)
cherrypy.server.unsubscribe()
server = cherrypy._cpserver.Server()
server.socket_host = "0.0.0.0"
server.socket_port = 9090
server.thread_pool = 30
server.subscribe()
cherrypy.engine.start()
cherrypy.engine.block()
Verwenden Sie nur wsgi Server cherrypy für Ihren Pyramid-App? Das ist die einzige Pyramid/Cherrypy-Integration, die ich gemacht habe. –
Ja. Ich benutze cherrypys wsgi Server für Pyramide. Ich folgte diesem Artikel https://www.digitalcocean.com/community/tutorials/how-to-deploy-python-wsgi-applications-using-a-cherrypy-web-server-behind-nginx (Beachten Sie, dass ich nicht verwendet habe nginx aber plane, es in naher Zukunft zu verwenden. Ab sofort nur cherrypy.) –
Hier ist ein Beispiel, wie ich meine Pyramid-Apps auf Openshift einstelle. Es gibt Beispiele für die Einrichtung von Kellnerin und cherrypy in der App.py-Datei. Hth.http: //stackoverflow.com/questions/27264103/how-to-create-app-using-pyramid-into-openshift/27324518#27324518 –