本文整理汇总了Python中twisted.web.resource.Resource类的典型用法代码示例。如果您正苦于以下问题:Python Resource类的具体用法?Python Resource怎么用?Python Resource使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Resource类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: bravo_site
def bravo_site(services):
# extract worlds and non-world services only once at startup
worlds = {}
other_services = {}
for name, service in services.iteritems():
factory = service.args[1]
if isinstance(factory, BravoFactory):
worlds[factory.name] = factory
else:
# XXX: do we really need those ?
other_services[name] = factory
# add site root
root = Resource()
root.putChild('', BravoResource(BravoRootElement(worlds, other_services)))
# add world sub pages and related plugins
for world, factory in worlds.iteritems():
# Discover parameterized plugins.
plugins = retrieve_plugins(IWorldResource,
parameters={"factory": factory})
# add sub page
child = BravoResource(BravoWorldElement(factory, plugins), False)
root.putChild(world, child)
# add plugins
for name, resource in plugins.iteritems():
# add plugin page
child.putChild(name, resource)
# create site
site = Site(root)
return site
示例2: __init__
def __init__(self, host, port, path, path_rewrite=None, reactor=reactor,
tls=False, headers={}):
"""
@param host: the host of the web server to proxy.
@type host: C{str}
@param port: the port of the web server to proxy.
@type port: C{port}
@param path: the base path to fetch data from. Note that you shouldn't
put any trailing slashes in it, it will be added automatically in
request. For example, if you put B{/foo}, a request on B{/bar} will
be proxied to B{/foo/bar}. Any required encoding of special
characters (such as " " or "/") should have been done already.
@param path_rewrite: list of lists with two regexp strings
used for rewriting the path.
@param tls: use tls or not
@type path: C{str}
"""
Resource.__init__(self)
self.host = host
self.port = port
self.path = path
self.path_rewrite = path_rewrite
self.tls = tls
self.reactor = reactor
self.headers = headers
示例3: XMLRPCService
class XMLRPCService(server.Site):
def __init__(self, port=None):
self._port = port or get_random_port()
self._addrs = []
self._root = Resource()
self._root.putChild('XMLRPC', XMLRPCResource(self._root))
server.Site.__init__(self, self._root)
def log(self, request):
log.info('%s http://localhost:%d%s' % (request.method,
self._port,
request.uri))
@property
def port(self):
return self._port
def serve(self):
log.info('Listening on port %d' % (self._port, ))
reactor.listenTCP(self._port, self)
def is_active(self):
return len(self._addrs)
def stop(self):
self._service.stopFactory()
示例4: _testRender
def _testRender(self, uri, expectedURI):
"""
Check that a request pointing at C{uri} produce a new proxy connection,
with the path of this request pointing at C{expectedURI}.
"""
root = Resource()
reactor = MemoryReactor()
resource = ReverseProxyResource("127.0.0.1", 1234, "/path", reactor)
root.putChild("index", resource)
site = Site(root)
transport = StringTransportWithDisconnection()
channel = site.buildProtocol(None)
channel.makeConnection(transport)
# Clear the timeout if the tests failed
self.addCleanup(channel.connectionLost, None)
channel.dataReceived("GET %s HTTP/1.1\r\nAccept: text/html\r\n\r\n" % (uri,))
# Check that one connection has been created, to the good host/port
self.assertEquals(len(reactor.tcpClients), 1)
self.assertEquals(reactor.tcpClients[0][0], "127.0.0.1")
self.assertEquals(reactor.tcpClients[0][1], 1234)
# Check the factory passed to the connect, and its given path
factory = reactor.tcpClients[0][2]
self.assertIsInstance(factory, ProxyClientFactory)
self.assertEquals(factory.rest, expectedURI)
self.assertEquals(factory.headers["host"], "127.0.0.1:1234")
示例5: __init__
def __init__(self, out=None, *a, **kw):
Resource.__init__(self, *a, **kw)
self._log = logging.getLogger(self.__class__.__name__)
self._log.debug('Initialized.')
if out is None:
out = sys.stdout
self.out = out
示例6: __init__
def __init__(self, config, port=None):
super(IdentityServer, self).__init__(config)
self.plugin_mapping = config["plugin_mapping"]
self.setupMySQL(config)
self.setupIdentityQueue(config)
self.cassandra_cf_identity = config["cassandra_cf_identity"]
self.cassandra_cf_connections = config["cassandra_cf_connections"]
self.cassandra_cf_recommendations = config["cassandra_cf_recommendations"]
self.cassandra_cf_reverse_recommendations = config["cassandra_cf_reverse_recommendations"]
self.cassandra_client = CassandraClusterPool(
config["cassandra_servers"],
keyspace=config["cassandra_keyspace"],
pool_size=len(config["cassandra_servers"]) * 2)
self.cassandra_client.startService()
resource = Resource()
self.function_resource = Resource()
resource.putChild("function", self.function_resource)
if port is None:
port = config["identity_server_port"]
self.site_port = reactor.listenTCP(port, server.Site(resource))
self.expose(self.updateConnections)
self.expose(self.updateAllConnections)
self.expose(self.updateAllIdentities)
self.expose(self.getRecommendations)
self.expose(self.getReverseRecommendations)
self.expose(self.updateIdentity)
# setup manhole
manhole_namespace = {
'service': self,
'globals': globals(),
}
reactor.listenTCP(config["manhole_identity_port"], self.getManholeFactory(manhole_namespace, admin=config["manhole_password"]))
示例7: test_posted
def test_posted(self):
root = Resource()
collector = Collector()
root.putChild(b"foo", collector)
from twisted.internet import reactor
while True:
try:
port = reactor.listenTCP(0, Site(root))
except:
pass
else:
self.addCleanup(port.stopListening)
port_number = port.getHost().port
break
fluentd_url = URL(
scheme="http",
host="127.0.0.1",
port=port_number,
path=["foo"],
)
agent = Agent(reactor)
destination = FluentdDestination(agent, fluentd_url)
destination({"hello": "world"})
def check():
self.assertEquals(collector.collected, [b'json={"hello": "world"}'])
return deferLater(reactor, 0.1, check)
示例8: __init__
def __init__(self, app, chunked=False, max_content_length=2 * 1024 * 1024,
block_length=8 * 1024):
Resource.__init__(self)
self.http_transport = TwistedHttpTransport(app, chunked,
max_content_length, block_length)
self._wsdl = None
示例9: create_web_service
def create_web_service(trompet, config):
"Creates the web service. Returns a tuple (service, site)."
site = Resource()
trompet.web = site
site.putChild("", Root())
service = internet.TCPServer(config["web"]["port"], server.Site(site))
service.setServiceParent(trompet)
示例10: run_twisted
def run_twisted(apps, port, static_dir='.'):
"""Twisted wrapper for the rpclib.server.wsgi.Application
Takes a list of tuples containing application, url pairs, and a port to
to listen to.
"""
if static_dir != None:
static_dir = os.path.abspath(static_dir)
logging.info("registering static folder %r on /" % static_dir)
root = twisted.web.static.File(static_dir)
else:
root = Resource()
for app, url in apps:
resource = WSGIResource(reactor, reactor, app)
logging.info("registering %r on /%s" % (app, url))
root.putChild(url, resource)
site = twisted.web.server.Site(root)
reactor.listenTCP(port, site)
logging.info("listening on: 0.0.0.0:%d" % port)
return reactor.run()
示例11: __init__
def __init__(self, cashier):
"""
:param cashier: The cashier we talk to
"""
Resource.__init__(self)
self.cashier = cashier
self.compropago = cashier.compropago
示例12: __init__
def __init__(self, parent):
"""
"""
Resource.__init__(self)
self._parent = parent
self._debug = self._parent._debug
self.reactor = self._parent.reactor
示例13: run_server
def run_server(fd=None, port=None, procs=None, verbose=False):
if args.verbose:
log.startLogging(stdout)
environ['SOLEDAD_LOG_TO_STDOUT'] = '1'
config = get_config()
path = config["blobs_path"]
if not port:
port = int(config["blobs_port"])
root = Resource()
root.putChild('blobs', BlobsResource("filesystem", path))
factory = Site(root)
if fd is None:
# Create a new listening port and several other
# processes to help out.
if procs is None:
procs = cpu_count()
log.msg('A total of %d processes will listen on port %d.' % (procs, port))
port = reactor.listenTCP(port, factory)
for i in range(procs - 1):
reactor.spawnProcess(
None, executable, [executable, __file__, str(port.fileno())],
childFDs={0: 0, 1: 1, 2: 2, port.fileno(): port.fileno()},
env=environ)
else:
# Another process created the port, just start listening on it.
log.msg('Adopting file descriptor %d...' % fd)
port = reactor.adoptStreamPort(fd, AF_INET, factory)
reactor.run()
示例14: startService
def startService(self):
app = self._prov_service.app
dhcp_request_processing_service = self._dhcp_process_service.dhcp_request_processing_service
if self._config['general.rest_authentication']:
credentials = (self._config['general.rest_username'],
self._config['general.rest_password'])
server_resource = new_restricted_server_resource(app, dhcp_request_processing_service, credentials)
logger.info('Authentication is required for REST API')
else:
server_resource = new_server_resource(app, dhcp_request_processing_service)
logger.warning('No authentication is required for REST API')
root_resource = Resource()
root_resource.putChild('provd', server_resource)
rest_site = Site(root_resource)
port = self._config['general.rest_port']
interface = self._config['general.rest_ip']
if interface == '*':
interface = ''
logger.info('Binding HTTP REST API service to "%s:%s"', interface, port)
if self._config['general.rest_ssl']:
logger.info('SSL enabled for REST API')
context_factory = ssl.DefaultOpenSSLContextFactory(self._config['general.rest_ssl_keyfile'],
self._config['general.rest_ssl_certfile'])
self._tcp_server = internet.SSLServer(port, rest_site, context_factory, interface=interface)
else:
self._tcp_server = internet.TCPServer(port, rest_site, interface=interface)
self._tcp_server.startService()
Service.startService(self)
示例15: build_resource
def build_resource():
root = Resource()
for key, val in RESOURCE_MAPPING.iteritems():
root.putChild(key, val)
return root