首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyro & WSGI树莓派

Pyro & WSGI树莓派
EN

Stack Overflow用户
提问于 2015-01-16 07:43:59
回答 1查看 400关注 0票数 0

我目前正在开发一个web应用程序,它可以控制我正在工作的机器人。由于某些原因,我无法让Pyro正常工作。看起来一切正常(没有错误),但当我单击网页上的按钮时,“服务器”中的方法从未被调用过。

下面是我的“服务器代码”:

代码语言:javascript
复制
import Pyro.core
import Pyro.naming
from rrb2 import *

class Robot(Pyro.core.ObjBase):

    def _setup(self):
            rr = RRB2()
            print "SETUP"
    def ledOneOn():
            rr.set_led1(1)
            print "LED ONE ONE"
    def ledOneOff():
            rr.set_led1(0)
            print "LED ONE OFF"
    def ledTwoOn():
            rr.set_led2(1)
            print "LED TWO ON"
    def ledTwoOff():
            rr.set_led2(0)
            print "LED TWO OFF"
    def forward():
            rr.forward()
            print "FORWARD"
    def stop():
            rr.stop()
            print "STOP"
    def __init__(self):
            Pyro.core.ObjBase.__init__(self)
            self._setup()

 if __name__ == "__main__":
    # Create a Pyro server and register our module with it
    Pyro.core.initServer()
    ns = Pyro.naming.NameServerLocator().getNS()
    daemon = Pyro.core.Daemon()
    daemon.useNameServer(ns)
    uri = daemon.connect(Robot(),"robot")
    daemon.requestLoop()

我知道正在设置Robot()类,因为我看到了输出,但其他方法都没有写入输出。

下面是我的网页调用的“客户端代码”:

代码语言:javascript
复制
import Pyro.core
from cgi import parse_qs

def application(environ, start_response):
    robot = Pyro.core.getProxyForURI("PYRONAME://robot")
    parameters = parse_qs(environ['QUERY_STRING'])

    if 'command' in parameters:
            command = parameters['command'][0]

            if 'command' == 'ledOneOn':
                    robot.ledOneOn()
            elif 'command' == 'ledTwoOn':
                    robot.ledTwoOn()

            status = '200 OK'
    else:
            status = '400 Bad Request'

    response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(status)))]
    start_response(status, response_headers)

    return [status]

我已经验证了robot设置为URI,并且parameters变量包含正确的信息。并且代码会像它应该的那样流向'if‘语句。但是在Robot()类中调用setup之后,没有调用任何方法。有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-19 01:51:47

看起来您使用的是不再支持的Pyro版本3。它的上一次发布是在3年前。如果可以的话,我可以建议您升级到Pyro4吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27975062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档