2016-12-26 1 views
0

Nous utilisons Flask et Nameko avec RabbitMQ dans notre configuration du projet. Nous l'utilisons pour plusieurs projets (nous avons commencé il y a 2 mois), et nous avons des problèmes avec les noms de services lors de leur développement.Python Nameko plusieurs projets (développement)

Nous avons deux projets - A et B, et les deux d'entre eux a UserService (avec des fonctions différentes):

class UserService: 
    name = 'user_service' 
    ... 

Le problème est quand nous avons besoin d'exécuter les deux projets sur une même machine un service utilisateur ne travail. Pour être précis, les deux fonctionnent, mais toutes les demandes sont traitées par l'un d'entre eux, et comme leur structure est différente, nous avons des erreurs.

Première idée était d'ajouter le préfixe du projet aux noms de services, quelque chose comme A_user_service, mais qui est vraiment laide solution (en partie rpc nous avons besoin alors d'appeler quelque chose comme rpc.A_user_service et qui est terrible). Y a-t-il des espaces de noms pour les projets nameko? Nous avons essayé de définir le paramètre rpc_excange dans config pour être différent par projet, mais cela ne résout pas le problème que nous avons.

Répondre

1

Je suppose que cela dépend en quelque sorte sur la façon dont vous définissez « projet ». Le nom du service est l'espace de nom principal, donc s'il y a une chance que ces deux services utilisateurs coexistent, ils devraient probablement utiliser des noms de service différents (peut-être plus spécifiques).

Si elles sont complètement séparées (par exemple développées pour deux clients distincts), l'utilisation de rabbitmq vhost s pourrait résoudre votre problème? De cette façon, vous finirez par exécuter deux "clusters" de services distincts, où rien dans le vhost ne peut voir ou parler de quelque chose dans vhost b (bien sûr, vous pouvez exécuter des instances de service x dans les deux si vous voulez, par exemple serait en cours d'exécution sur les deux sites client/réseaux)

+0

Bien que ce soit la solution acceptable, je dois savoir s'il y a moyen de le faire avec nameko configuration. Si je n'arrive pas à le faire, j'accepterai cette réponse. – PerunSS

+0

peut-être que je suis malentendu, mais le 'vhost' _is_ partie de la configuration de nameko, via le' AMQP_URI' – second

+0

oui, mon mauvais. RabbitMQ vhost résoudra définitivement le problème. Merci. – PerunSS