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.

[wamp] crossbar demarre mais ne fait rien

+1 vote

La question du jour porte sur le fichier .crossbar/config.json

je me suis farcie la doc dans tous les sens

Mais je coince sur une truc con :

j'ai 3 components dans mon container mais apres avoir les messages "classiques" :

[Controller  17349] Container 'worker2': PYTHONPATH extended
[Controller  17349] Container 'worker2': component 'component1' started
[Controller  17349] Container 'worker2': component 'component2' started
[Controller  17349] Container 'worker2': component 'component3' started

il ne se passe plus rien.

Parmi les 3 composants, il y a celui qui est créé par defaut qu'on obtient en tapant :

crossbar init --template hello:python --app $PWD/monapp

l'appli 'hello', quand elle est lancée seule, flood assez pour qu'on le remarque dans la console crossbar et dans son browser

mais avec 2 copains de plus ca reste figé . Meme les 2 autres composants devraient démarrer illico.

la tete du fichier .crossbar/config.json est celle ci :

{
   "controller": {
   },
   "workers": [
      {
     "type": "router",
     "realms": [
        {
           "name": "realm1",
           "roles": [
          {
             "name": "anonymous",
             "permissions": [
            {
               "uri": "*",
               "publish": true,
               "subscribe": true,
               "call": true,
               "register": true
            }
             ]
          }
           ]
        }
     ],
     "transports": [
        {
           "type": "web",
           "endpoint": {
          "type": "tcp",
          "port": 8080
           },
           "paths": {
          "/": {
             "type": "static",
             "directory": ".."
          },
          "ws": {
             "type": "websocket"
          }
           }
        }
     ]
      },
      {
     "type": "container",
     "options": {
        "pythonpath": [".."]
     },
     "components": [
        {
           "type": "class",
           "classname": "hello.hello.AppSession",
           "realm": "realm1",
           "transport": {
          "type": "websocket",
          "endpoint": {
             "type": "tcp",
             "host": "127.0.0.1",
             "port": 8080
          },
          "url": "ws://127.0.0.1:8080/ws"
           }
        },
        {
           "type": "class",
           "classname": "components.evernote.basic_frontend.EvernoteComponent",
           "realm": "realm1",
           "transport": {
          "type": "websocket",
          "endpoint": {
             "type": "tcp",
             "host": "127.0.0.1",
             "port": 8080
          },
          "url": "ws://127.0.0.1:8080/ws"
           },
           "extra": {
         "database": {
           "host": "127.0.0.1",
           "port": 5432,
           "database": "foobar",
           "user": "foobar",
           "password": "foobar"
         }
           }
        },
        {
           "type": "class",
           "classname": "components.rss.basic_backend.RssComponent",
           "realm": "realm1",
           "transport": {
          "type": "websocket",
          "endpoint": {
             "type": "tcp",
             "host": "127.0.0.1",
             "port": 8080
          },
          "url": "ws://127.0.0.1:8080/ws"
           },
           "extra": {
         "database": {
           "host": "127.0.0.1",
           "port": 5432,
           "database": "foobar",
           "user": "foobar",
           "password": "foobar"
         }
           }
        }
    ]
      }
   ]
}
demandé 26-Fev-2015 par foxmask (2,874 points)

en complement :

crossbar "stuck" quand dans les composants on aurait un composant qui subscribe

sur les 3 composants, 2 sont des publisher et 1 un subscriber, si je vire le subscriber les 2 autres s'exécutent

me reste à trouver comment faire en sorte que les composant avec self.subscribe() ne bloque pas le boucle de traitement de démarrage des autres copins

je pense aussi que c'est surtout lié au fait que le self.subscribe() est dans le onJoin() ; mais en meme temps je ne sais pas si on peut mettre self.subscribe() ailleurs.

1 Réponse

+1 vote
 
Meilleure réponse

Sans le code des composants, je ne peux pas dire grand chose. Par contre, ce qui suit fonctionne :

{
   "controller": {},
   "workers": [
      {
         "type": "router",
         "realms": [
            {
               "name": "realm1",
               "roles": [
                  {
                     "name": "anonymous",
                     "permissions": [
                        {
                           "uri": "*",
                           "publish": true,
                           "subscribe": true,
                           "call": true,
                           "register": true
                        }
                     ]
                  }
               ]
            }
         ],
         "transports": [
            {
               "type": "web",
               "endpoint": {
                  "type": "tcp",
                  "port": 8080
               },
               "paths": {
                  "/": {
                     "type": "static",
                     "directory": "../web"
                  },
                  "ws": {
                     "type": "websocket"
                  }
               }
            }
         ]
      },
      {
         "type": "container",
         "options": {
            "pythonpath": [".."]
         },
         "components": [
            {
               "type": "class",
               "classname": "components.one.Component",
               "realm": "realm1",
               "transport": {
                  "type": "websocket",
                  "endpoint": {
                     "type": "tcp",
                     "host": "127.0.0.1",
                     "port": 8080
                  },
                  "url": "ws://127.0.0.1:8080/ws"
               }
            },
            {
               "type": "class",
               "classname": "components.two.Component",
               "realm": "realm1",
               "transport": {
                  "type": "websocket",
                  "endpoint": {
                     "type": "tcp",
                     "host": "127.0.0.1",
                     "port": 8080
                  },
                  "url": "ws://127.0.0.1:8080/ws"
               },
               "extra": {
                  "database": {
                     "host": "127.0.0.1",
                     "port": 5432,
                     "database": "foobar",
                     "user": "foobar",
                     "password": "foobar"
                  }
               }
            },
            {
               "type": "class",
               "classname": "components.three.Component",
               "realm": "realm1",
               "transport": {
                  "type": "websocket",
                  "endpoint": {
                     "type": "tcp",
                     "host": "127.0.0.1",
                     "port": 8080
                  },
                  "url": "ws://127.0.0.1:8080/ws"
               },
               "extra": {
                  "database": {
                     "host": "127.0.0.1",
                     "port": 5432,
                     "database": "foobar",
                     "user": "foobar",
                     "password": "foobar"
                  }
               }
            }
         ]
      }
   ]
}

Composant 1 :

from twisted.internet.defer import inlineCallbacks

from autobahn.twisted.util import sleep
from autobahn.twisted.wamp import ApplicationSession



class Component(ApplicationSession):
    """Component one. Publish messages."""

    @inlineCallbacks
    def onJoin(self, details):
        while True:
            yield self.publish(u'com.app.sub', 'I am a message.')

            yield sleep(2)

Composant 2 :

from twisted.internet.defer import inlineCallbacks

from autobahn import wamp
from autobahn.twisted.wamp import ApplicationSession



class Component(ApplicationSession):
    """Component two. Subscribe."""

    def __init__(self, config):
        ApplicationSession.__init__(self, config)

        print(config.extra)

    def onJoin(self, details):
        self.register(self)
        self.subscribe(self)

    @wamp.subscribe(u'com.app.sub')
    def sub(self, *args):
        print("Component 2 received: {}".format(args))

Composant 3 :

from twisted.internet.defer import inlineCallbacks

from autobahn import wamp
from autobahn.twisted.wamp import ApplicationSession



class Component(ApplicationSession):
    """Component three. Subscribe."""

    def __init__(self, config):
        ApplicationSession.__init__(self, config)

        print(config.extra)

    def onJoin(self, details):
        self.register(self)
        self.subscribe(self)

    @wamp.subscribe(u'com.app.sub')
    def sub(self, *args):
        print("Component 3 received: {}".format(args))
répondu 27-Fev-2015 par Vayel (1,050 points)
sélectionné 28-Fev-2015 par foxmask

va falloir que je fasse de la dichotomie ... pour changer ... et trouver ce qui deconne.
merci de ton aide

Merci pour le vote contre ; j'aprecie toujours qu'on n'est pas le courage d'expliquer ces votes qui ne veulent rien dire sans explications pour qu'on sache ce qui n'a pas été dans les explications ... MERCI MERCI MERCI ENCORE DONC

...