我正在使用cherrypy 服务器通过pyAMF 通道从python 客户端接收请求。我从下面的模型开始,它工作正常:
服务器:
import cherrypy
from pyamf.remoting.gateway.wsgi import WSGIGateway
def echo(*args, **kwargs):
return (args, kwargs)
class Root(object):
def index(self):
return "running"
index.exposed = True
services = {
'myService.echo': echo,
}
gateway = WSGIGateway(services, debug=True)
cherrypy.tree.graft(gateway, "/gateway/")
cherrypy.quickstart(Root())
客户:
from pyamf.remoting.client import RemotingService
path = 'http://localhost:8080/gateway/'
gw = RemotingService(path)
service = gw.getService('myService')
print service.echo('one=1, two=3')
结果: [[u'one=1, two=3'], {}]
现在如果不是:
def echo(*args, **kwargs):
return (args, kwargs)
我用:
def echo(**kwargs):
return kwargs
并发送相同的请求,我收到以下错误:
类型错误:echo() 正好采用 0 个参数(给定 1 个)
同时:
>>> def f(**kwargs): return kwargs
...
>>> f(one=1, two=3)
{'two': 3, 'one': 1}
>>>
问:为什么会这样?请分享见解
我正在使用:python 2.5.2、cherrypy 3.1.2、pyamf 0.5.1