tordu Y a-t-il un mécanisme à torsion pour transmettre un message à un autre dans le processus? J'ai écrit un bus prototype qui ressemble àMessagerie inter-service/bus pour
from collections import defaultdict
channels = defaultdict(list)
def registerSingle(name, callback):
"""
Similar to register but ensures only one callback is register to a channel
@todo change Exception to something more appropriate
:name str A reasonably coherent name for a callback channel
:callback callable Either a bound method or just a function
"""
global channels
if len(channels[name]) > 0:
raise Exception("Tried to register %s but already has %s registered" % (name, channels))
channels[name].append(callback)
def register(name, callback):
"""
Binds a callback to a named channel
:name str A reasonably coherent name for a callback channel
:callback callable Either a bound method or just a function
"""
global channels
channels[name].append(callback)
def call(name, *args, **kwargs):
"""
Applies the provided arguments to any and all callbacks for a specified channel
:name str A reasonably coherent name for a callback channel
"""
for callback in channels[name]:
callback(*args, **kwargs)
A utiliser comme
foo.py
from Application.data import bus
def doSomething(fooArg):
print "Hello from Foo, you sent " , fooArg
bus.register("foo.doSomething", doSomething)
bar.py
from Application.data import bus
bus.call("foo.doSomething", "A simple string")
C'est un exemple très simple le cas d'utilisation principal est de partager un magasin de données mémoire commun. Au départ, j'ai essayé d'utiliser un singleton mais j'ai rencontré trop de problèmes en essayant de le couvrir avec des tests unitaires. J'ai alors essayé de passer une référence au magasin de données partout mais j'ai senti que je lissais mon application pour être 100% dépendant du magasin de données ne changeant jamais. Mon seul problème avec l'idée de data.bus est que c'est simplement une variable globale sur-glorifiée. Donc, ma question, y at-il une sorte de bus de service ou de système de messagerie à l'intérieur de torsadé pour permettre de passer des messages arbitraires entre différentes ressources à l'intérieur d'une application tordue ou mon idée est-elle aussi bonne que possible?
Malheureusement, il semble qu'il y ait peut-être un problème de réseautage à l'Université de York. pip install 404 et la page d'accueil désignée est également manquante. – David
J'ai trouvé une source alternative au code Google ici http://code.google.com/p/pylinda/ – David
Je suis d'accord que Twisted ne devrait probablement pas changer quoi que ce soit ici, surtout si c'est pour la messagerie intra-processus. – Glyph