Получить конкретную строку из списка сервисов с помощью WSDiscovery - PullRequest
1 голос
/ 31 марта 2010

Я использую модуль WSDiscovery для Python. Мне удалось найти сервисы в моей сети. Я пытаюсь найти клиента и получить XAddress от этого. Модуль WSDiscovery имеет очень мало документации, на самом деле так мало единственной части находится в файле readme модуля длиной в несколько строк. Мне удалось получить этот конкретный код, работающий ниже:

import WSDiscovery
from WSDiscovery import WSDiscovery

def printService():
    wsd = WSDiscovery()
    wsd.start()
    services = wsd.searchServices()
    for service in services:
        try:
            print service.getEPR() + ":" + str(service.getXAddrs())
            print service.getTypes()
        except:
            print "Error with "+service.getEPR()

    wsd.stop()

Это все службы, которые можно получить, и я могу получить разные адреса X, используя:

service.getXAddrs()[0]

Но я ищу одного с конкретным идентификатором. Один из адресов будет выглядеть так:

4yr8343-r48d-3ref-4fsw-5r4tw432:[u'http://10.10.10.10:5321']

Может кто-нибудь придумать предложение, например, выбрать адрес с этим идентификационным номером.

Спасибо

1 Ответ

1 голос
/ 31 марта 2010

Глядя на источники , вы могли видеть, что

1. Подпись searchServices имеет несколько параметров:

def searchServices(self, types=None, scopes=None, timeout=3)

и я не думаю, что фильтрация по типам \ областям может быть полезна, не так ли?

2. Сервис КЛАСС имеет такие параметры:

class Service:

def __init__(self, types, scopes, xAddrs, epr, instanceId):
    self.__types = types
    self.__scopes = scopes
    self.__xAddrs = xAddrs
    self.__epr = epr
    self.__instanceId = instanceId
    self.__messageNumber = 0
    self.__metadataVersion = 1

Для того, что я вижу, единственное, что вы можете сделать, - это перебирать сервисы, найденные searchServices, и фильтровать по одному из доступных атрибутов.

...