You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.2 KiB
Python

from typing import List, Optional
from amqpworker import conf
from amqpworker.connections import AMQPConnection
from amqpworker.entrypoints import EntrypointInterface, _extract_sync_callable
from amqpworker.routes import AMQPRoute, AMQPRouteOptions, RoutesRegistry
def _register_amqp_handler(
registry: RoutesRegistry,
routes: List[str],
vhost: str,
connection: Optional[AMQPConnection],
options: Optional[AMQPRouteOptions],
):
def _wrap(f):
cb = _extract_sync_callable(f)
route = AMQPRoute(
handler=cb,
routes=routes,
vhost=vhost,
connection=connection,
options=options,
)
registry.add_amqp_route(route)
return f
return _wrap
class AMQPRouteEntryPointImpl(EntrypointInterface):
def consume(
self,
routes: List[str],
vhost: str = conf.settings.AMQP_DEFAULT_VHOST,
connection: Optional[AMQPConnection] = None,
options: Optional[AMQPRouteOptions] = AMQPRouteOptions(),
):
return _register_amqp_handler(
self.app.routes_registry, routes, vhost, connection, options
)