基于Ryu的服务器实现及相关请求访问处理

基于Ryu的服务器实现及相关请求访问处理

前言及问题描述

近期又遇到了一个非常棘手的问题,由于Ryu是通过Python语言开发的,通过Ryu的wsgi的方式建立服务器,无法解析PHP,通过多次方法解决无效,后来直接基于Python做了一次实验,通过Python语言去调用相应脚本。

实现方案

实现方案,通过ryu的web gui的实现进行改装

改装后代码

import os
import commands
from webob.static import DirectoryApp

from ryu.app.wsgi import ControllerBase, WSGIApplication, route
from ryu.base import app_manager



PATH = os.path.dirname(__file__)


# Serving static files
class GUIServerApp(app_manager.RyuApp):
    _CONTEXTS = {
        'wsgi': WSGIApplication,
    }

    def __init__(self, *args, **kwargs):
        super(GUIServerApp, self).__init__(*args, **kwargs)

        wsgi = kwargs['wsgi']
        wsgi.register(GUI_P4_ServerController)

class GUI_P4_ServerController(ControllerBase):
    def __init__(self, req, link, data, **config):
        super(GUI_P4_ServerController, self).__init__(req, link, data, **config)
        path = "%s/html/network_slice_web" % PATH
        self.static_app = DirectoryApp(path)

    @route('topology', '/{filename:.*}', methods=['GET'])
    def static_handler(self, req, **kwargs):
        if kwargs['filename']:
            if kwargs['filename'] == "xxx":   #访问请求的url xxx,通过req接受数据
                #可以通过req接受请求的数据,包括Get的请求。
                #抓取数据后,这里就是你开始表演的地方,根据对应的需求,进行相应的代码编写
            req.path_info = kwargs['filename']
        return self.static_app(req)
原文地址:https://www.cnblogs.com/wpqwpq/p/6854538.html