Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

nameko et decorators multiples ou dynamiques

0 votes

avec nameko, on peut utiliser du pub/sub avec un décorateur.

pour un service donné je vais avoir plusieurs "publishers" possibles alors je me demandais quelle methode utilisée:

soit un decorateur par service

from nameko.events import EventDispatcher, event_handler
from nameko.rpc import rpc

class ServiceA:
    """ Event dispatching service. """
    name = "service_a"

    dispatch = EventDispatcher()

    @rpc
    def dispatching_method(self, payload):
    self.dispatch("event_type", payload)

class ServiceC:
    """ Event dispatching service. """
    name = "service_c"

    dispatch = EventDispatcher()

    @rpc
    def dispatching_method(self, payload):
    self.dispatch("event_type", payload)

    @event_handler("service_b", "event_type")
    @event_handler("service_c", "event_type")
    @event_handler("service_d", "event_type")
    def handle_event(self, payload):
    print("service a received:", payload)

class ServiceD:
    """ Event dispatching service. """
    name = "service_d"

    dispatch = EventDispatcher()

    @rpc
    def dispatching_method(self, payload):
    self.dispatch("event_type", payload)

    @event_handler("service_a", "event_type")
    @event_handler("service_b", "event_type")
    @event_handler("service_c", "event_type")
    def handle_event(self, payload):
    print("service d received:", payload)


class ServiceB:
    """ Event listening service. """
    name = "service_b"

    @event_handler("service_a", "event_type")
    @event_handler("service_c", "event_type")
    @event_handler("service_d", "event_type")
    def handle_event(self, payload):
    print("service b received:", payload)

soit "un moyen" pour mettre le nom du service (mais je sèche)

    @event_handler(service_name, "event_type")
    def handle_event(self, payload):
        print("service xxx received:", payload)
demandé 20-Dec-2017 par foxmask (2,772 points)

Votre réponse

Preview

Votre nom à afficher ( en option ):
Vie privée: . Votre adresse de messagerie ne sera utilisée que pour l'envoi de ces notifications .
Vérification anti -spam:
Pour éviter cette vérification à l'avenir, Connectez vous ou inscrivez vous.
...