Introduction
The Django Remoting gateway included in PyAMF allows you to expose functions in Django (0.96 or newer) to AMF clients and servers.
Exposing functions for AMF remoting is simple by defining a gateway (a dispatcher) like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # yourproject/yourapp/amfgateway.py
from pyamf.remoting.gateway.django import DjangoGateway
def echo(request, data):
return data
services = {
'myservice.echo': echo
# could include other functions as well
}
echoGateway = DjangoGateway(services)
|
The request in the first argument to the echo function corresponds to the request object passed to every Django view function. To disable this function add expose_request=False when instantiating the DjangoGateway. As in:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # yourproject/yourapp/amfgateway.py
from pyamf.remoting.gateway.django import DjangoGateway
def echo(data):
return data
services = {
'myservice.echo': echo
# could include other functions as well
}
echoGateway = DjangoGateway(services, expose_request=False, debug=True)
|
The instance echoGateway is a callable object suitable to be used as a Django view. To insert it into your url structure add it to your urlconf:
1 2 3 4 5 6 7 | # yourproject/urls.py
urlpatterns = patterns('',
# AMF Remoting Gateway
(r'^gateway/', 'yourproject.yourapp.amfgateway.echoGateway'),
)
|
To test the gateway you can use a Python AMF client like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(levelname)-5.5s [%(name)s] %(message)s'
)
from pyamf.remoting.client import RemotingService
gw = RemotingService('http://127.0.0.1:8000/gateway/')
service = gw.getService('myservice', logger=logging, debug=True)
print service.echo('Hello World!')
|