crossbario / crossbar

Crossbar.io - WAMP application router
https://crossbar.io/
Other
2.05k stars 274 forks source link

Fix wap webservice #1987

Closed oberstet closed 2 years ago

oberstet commented 2 years ago

so WAP works on plain router workers, but still fails on proxy workers:

2022-04-07T10:22:25+0200 [Controller  44353] Order Transport transport000 to start Web Service webservice004
2022-04-07T10:22:25+0200 [Proxy       44372] Starting "wap" Web service on path "reports" of transport "transport000" <crossbar.worker.transport.TransportController.start_web_transport_service>
2022-04-07T10:22:25+0200 [Proxy       44372] ProxyController.onUserError(): "AttributeError: 'ProxyController' object has no attribute 'realm_by_name'"
Traceback (most recent call last):
  File "/home/oberstet/cpy39_1/lib/python3.9/site-packages/twisted/internet/defer.py", line 1905, in unwindGenerator
    return _cancellableInlineCallbacks(gen)
  File "/home/oberstet/cpy39_1/lib/python3.9/site-packages/twisted/internet/defer.py", line 1815, in _cancellableInlineCallbacks
    _inlineCallbacks(None, gen, status)
  File "/home/oberstet/cpy39_1/lib/python3.9/site-packages/twisted/internet/defer.py", line 1660, in _inlineCallbacks
    result = current_context.run(gen.send, result)
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/worker/transport.py", line 496, in start_web_transport_service
    webservice = yield maybeDeferred(webservice_factory.create, transport, path, config)
--- <exception caught here> ---
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/worker/transport.py", line 496, in start_web_transport_service
    webservice = yield maybeDeferred(webservice_factory.create, transport, path, config)
  File "/home/oberstet/cpy39_1/lib/python3.9/site-packages/twisted/internet/defer.py", line 190, in maybeDeferred
    result = f(*args, **kwargs)
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/webservice/wap.py", line 472, in create
    resource = WapResource(transport.worker, config, path)
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/webservice/wap.py", line 75, in __init__
    self._service_agent = worker.realm_by_name(self._realm_name).session
builtins.AttributeError: 'ProxyController' object has no attribute 'realm_by_name'

2022-04-07T10:22:25+0200 [Controller  44353] Could not start node: Traceback (most recent call last):
--- <exception caught here> ---
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/node/node.py", line 456, in start
    res = yield self.personality.Node.boot(self)
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/node/node.py", line 610, in boot_from_config
    yield d
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/node/node.py", line 579, in configure_worker
    yield config_fn(worker_logname, worker_id, worker)
  File "/home/oberstet/scm/crossbario/crossbar/crossbar/node/node.py", line 967, in _configure_native_worker_proxy
    yield self._controller.call('crossbar.worker.{}.start_web_transport_service'.format(worker_id),
autobahn.wamp.exception.ApplicationError: ApplicationError(error=<wamp.error.runtime_error>, args=["'ProxyController' object has no attribute 'realm_by_name'"], kwargs={}, enc_algo=None, callee=None, callee_authid=None, callee_authrole=None, forward_for=None)
oberstet commented 2 years ago

proxy based WAP with requests distributing among multiple frontend proxy workers now also works:

Bildschirmfoto von 2022-04-07 12-13-49

oberstet commented 2 years ago

router worker based: https://github.com/crossbario/crossbar-examples/tree/master/webservices/wap

proxy worker based: https://github.com/crossbario/crossbar-examples/blob/master/proxy/.crossbar/config7.json