Exemplo n.º 1
0
def prepare_file_access_handler() -> FileAccessHandler:
    access_type = settings.CELERY_FILE_ACCESS_TYPE
    if access_type == 'Local':
        return LocalFileAccess(settings.CELERY_FILE_ACCESS_LOCAL_ROOT_DIR)
    elif access_type == 'Nginx':
        return NginxHttpFileAccess(settings.CELERY_FILE_ACCESS_NGINX_ROOT_URL)
    else:
        return None
def test_local_file_access():
    temp_dir = tempfile.mkdtemp()
    sub_dir_rel = os.path.join('sub1', 'sub2')
    os.makedirs(os.path.join(temp_dir, sub_dir_rel))

    with open(os.path.join(temp_dir, 'sub1/sub2', 'file.txt'), 'w') as f:
        f.write('Hello, World!')

    with open(os.path.join(temp_dir, 'sub1', 'file2.txt'), 'w') as f:
        f.write('Hello, World2!')

    lfa = LocalFileAccess(root_dir=temp_dir)
    assert_list_equal(lfa.list('sub1/sub2'), ['sub1/sub2/file.txt'])
    assert_list_equal(lfa.list('sub1'), ['sub1/file2.txt', 'sub1/sub2/file.txt'])

    with lfa.get_local_fn('sub1/sub2/file.txt') as (fn, _uri):
        with open(fn, 'r') as f:
            assert_equal(f.readline(), 'Hello, World!')