Как различные уровни контроля доступа конфликтуют друг с другом при применении его к службе GCP, такой как BigQuery или Bigtable?

Вот мой ответ. Чистый питон. Использование timeit кажется довольно быстрым. Запуск 100 строк файла журнала, который имеет 100 000 строк:

>>> timeit.timeit('tail.tail(f, 100, 4098)', 'import tail; f = open("log.txt", "r");', number=10)
0.0014600753784179688
>>> timeit.timeit('tail.tail(f, 100, 4098)', 'import tail; f = open("log.txt", "r");', number=100)
0.00899195671081543
>>> timeit.timeit('tail.tail(f, 100, 4098)', 'import tail; f = open("log.txt", "r");', number=1000)
0.05842900276184082
>>> timeit.timeit('tail.tail(f, 100, 4098)', 'import tail; f = open("log.txt", "r");', number=10000)
0.5394978523254395
>>> timeit.timeit('tail.tail(f, 100, 4098)', 'import tail; f = open("log.txt", "r");', number=100000)
5.377126932144165

Вот код:

import os


def tail(f, lines=1, _buffer=4098):
    """Tail a file and get X lines from the end"""
    # place holder for the lines found
    lines_found = []

    # block counter will be multiplied by buffer
    # to get the block size from the end
    block_counter = -1

    # loop until we find X lines
    while len(lines_found) < lines:
        try:
            f.seek(block_counter * _buffer, os.SEEK_END)
        except IOError:  # either file is too small, or too many lines requested
            f.seek(0)
            lines_found = f.readlines()
            break

        lines_found = f.readlines()

        # we found enough lines, get out
        # Removed this line because it was redundant the while will catch
        # it, I left it for history
        # if len(lines_found) > lines:
        #    break

        # decrement the block counter to get the
        # next X bytes
        block_counter -= 1

    return lines_found[-lines:]
1
задан Ramesh Dharan 21 March 2019 в 14:17
поделиться

1 ответ

Эта документация должна вам помочь: https://cloud.google.com/iam/docs/overview#policy_hierarchy

Это означает, что верхнее разрешение будет автоматически наследоваться ресурсом, которым он управляет. Например, если у вас есть разрешение на просмотр на уровне проекта, даже если кто-то попытается ограничить вас, чтобы вы не могли видеть вычислительный движок, вы все равно сможете просматривать их, так как вычислительный движок наследует права проектов.

0
ответ дан night-gold 21 March 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: