Python Can';找不到函数名
我正在为appengine创建一个webservice,并且在类webservice.py中创建了两个函数。我试图在SimpleXMLRPCServer对象中注册这些函数。但当我将函数名传递给参数时,它会显示未定义的变量 代码如下:Python Can';找不到函数名,python,google-app-engine,Python,Google App Engine,我正在为appengine创建一个webservice,并且在类webservice.py中创建了两个函数。我试图在SimpleXMLRPCServer对象中注册这些函数。但当我将函数名传递给参数时,它会显示未定义的变量 代码如下: import SimpleXMLRPCServer from google.appengine.ext import webapp from google.appengine.ext import db class WebService(webapp.Reque
import SimpleXMLRPCServer
from google.appengine.ext import webapp
from google.appengine.ext import db
class WebService(webapp.RequestHandler):
def login(self, username, password):
calls = db.GqlQuery("SELECT * from User ORDER BY username DESC LIMIT 10")
for call in calls:
if calls.username == username and calls.password == password:
return True
return False
def register(self, username, password):
db.GqlQuery("INSERT into User (username, password) value(%s, %s)"%(username, password))
return True
server = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost',8080))
server.register_function(login)
server.register_function(register)
server.serve_forever()
这样做对吗??如果不是,你能告诉我我的代码有什么错误吗
谢谢大家! 您试图将全局对象
login
和register
传递给register\u function()
,但这些不是全局对象,而是方法
我假设您要么需要实例化该类并在中传递该对象的属性,要么需要按照评论员的建议传递该类的属性。我刚刚解决了这个问题!我还是python的新手,所以这是一个新手的疑问 看起来问题出在身份识别上。我需要把它放在类标识中,这样它才能找到方法 事实上,应该是这样的:
import SimpleXMLRPCServer
from google.appengine.ext import webapp
from google.appengine.ext import db
class WebService(webapp.RequestHandler):
def login(self, username, password):
calls = db.GqlQuery("SELECT * from User ORDER BY username DESC LIMIT 10")
for call in calls:
if calls.username == username and calls.password == password:
return True
return False
def register(self, username, password):
db.GqlQuery("INSERT into User (username, password) value(%s, %s)"%(username, password))
return True
server = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost',8080))
server.register_function(login)
server.register_function(register)
server.serve_forever()
这解决了我的问题。谢谢您的回复。您是否尝试了
WebService.login
和WebService.register
?您真的不想让这些方法成为您的RequestHandler。当然,你根本无法在App Engine的8080端口上运行服务器,所以你根本不想这样做。你需要决定你在做什么——构建一个App Engine应用程序,或者一个SimpleXMLRPCServer应用程序。试着让它们成为免费的/模块级函数(没有self
),然后在服务器上注册它们——也就是说,如果你想要的是SXRS而不是GAE,我可能会误解——为什么你想同时使用SXRS和webapp?你真的想开始在类定义中提供服务吗?不,你没有。这可能解决了短期问题,但并不正确。请参阅我对该问题的回答。您可以使用appengine执行xmlrpc,但不能这样做。