Esempio n. 1
0
def get_files(ids):
    '''
    Recibe lista de tuplas de tamaño 3 (como devueltas por get_ids de search)
    y devuelve los ficheros del mongo correspondiente que no estén bloqueados.
    Si se recibe un fichero bloqueado, lo omite y bloquea en el sphinx.

    @type ids: iterable de tuplas de tamaño 3 o mayor
    @param ids: lista de tuplas (mongoid, id servidor, id sphinx)

    @yield: cada uno de los resultados de los ids en los mongos

    '''
    toblock = []
    already = False
    for f in filesdb.get_files(ids, servers_known = True, bl = None):
        if f["bl"] == 0 or f["bl"] is None:
            yield f
        else:
            toblock.append(mid2bin(f["_id"]))

    # bloquea en sphinx los ficheros bloqueados
    if toblock:
        cache.cacheme = False
        id_list = {i[0]:i[2] for i in ids}
        block_files( sphinx_ids=[id_list[i] for i in toblock] )
Esempio n. 2
0
def get_files(ids):
    '''
    Recibe lista de tuplas de tamaño 3 (como devueltas por get_ids de search)
    y devuelve los ficheros del mongo correspondiente que no estén bloqueados.
    Si se recibe un fichero bloqueado, lo omite y bloquea en el sphinx.

    @type ids: iterable de tuplas de tamaño 3 o mayor
    @param ids: lista de tuplas (mongoid, id servidor, id sphinx)

    @yield: cada uno de los resultados de los ids en los mongos

    '''
    already = False
    files = filesdb.get_files(ids, servers_known = True, bl = None)
    for r in files:
        if r["bl"] == 0 or r["bl"] is None:
            yield r
        elif not already:
            already = True
            id_list = {i[0]:i[2] for i in ids}
            block_files( sphinx_ids=[id_list[mid2bin(i["_id"])] for i in files if i["bl"] != 0 and not i["bl"] is None ])