Я использую сервер 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
и отправив тот же запрос, я получаю следующую ошибку:
TypeError: 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