Beispiel #1
0
def delete(path, retry_after=10, retry_for=60):
    """Try to delete a file or directory.  If this fails because the
    file is open, we retry deleting the file every so often This
    probably only makes a difference on Windows.
    """

    import eventloop
    path = expand_filename(path)
    try:
        if os.path.isfile(path):
            os.remove(path)
        elif os.path.isdir(path):
            shutil.rmtree(path)
        else:
            logging.warn("asked to delete '%s' but it's not there." % path)
    except EnvironmentError, e:
        logging.warn("Error deleting %s", path)
        if retry_for > 0 and is_windows_file_in_use_error(e):
            # permission denied, assume this means it's open by another
            # process on windows.
            deletes_in_progress.add(path)
            logging.info('Retrying delete for %s (%d)', path, retry_after)
            eventloop.add_timeout(retry_after,
                                  delete,
                                  "Delete File Retry",
                                  args=(path, retry_after,
                                        retry_for - retry_after))
Beispiel #2
0
def migrate_file(source, dest, callback, retry_after=10, retry_for=60):
    """Try to migrate a file, if this works, callback is called.  If
    we fail because the file is open, we retry migrating the file
    every so often (by default every 10 seconds, stopping after 60
    seconds).  This probably only makes a difference on Windows.
    """
    import eventloop

    source = expand_filename(source)
    dest = expand_filename(dest)

    try:
        shutil.move(source, dest)
    except EnvironmentError, e:
        logging.warn("Error migrating %s to %s (Error: %s)", source, dest, e)
        try:
            os.remove(dest)
        except EnvironmentError:
            pass
        if retry_for > 0:
            if is_windows_file_in_use_error(e):
                # permission denied, assume this means it's open by
                # another process on windows.
                logging.info('Retrying migration for %s', source)
                eventloop.add_timeout(retry_after,
                                      migrate_file,
                                      "Migrate File Retry",
                                      args=(source, dest, callback,
                                            retry_after,
                                            retry_for - retry_after))
Beispiel #3
0
def migrate_file(source, dest, callback, retry_after=10, retry_for=60):
    """Try to migrate a file, if this works, callback is called.  If
    we fail because the file is open, we retry migrating the file
    every so often (by default every 10 seconds, stopping after 60
    seconds).  This probably only makes a difference on Windows.
    """
    import eventloop

    source = expand_filename(source)
    dest = expand_filename(dest)

    try:
        shutil.move(source, dest)
    except EnvironmentError, e:
        logging.warn("Error migrating %s to %s (Error: %s)", source, dest, e)
        try:
            os.remove(dest)
        except EnvironmentError:
            pass
        if retry_for > 0:
            if is_windows_file_in_use_error(e):
                # permission denied, assume this means it's open by
                # another process on windows.
                logging.info('Retrying migration for %s', source)
                eventloop.add_timeout(retry_after, migrate_file,
                        "Migrate File Retry", args=(source, dest, callback,
                            retry_after, retry_for - retry_after))
Beispiel #4
0
def delete(path, retry_after=10, retry_for=60, firsttime=True):
    """Try to delete a file or directory.  If this fails because the
    file is open, we retry deleting the file every so often This
    probably only makes a difference on Windows.
    """

    import eventloop
    path = expand_filename(path)
    try:
        if os.path.isfile(path):
            os.remove (path)
        elif os.path.isdir(path):
            shutil.rmtree (path)
        else:
            logging.warn("asked to delete '%s' but it's not there." % path)
    except EnvironmentError, e:
        logging.warn("Error deleting %s", path)
        if retry_for > 0 and is_windows_file_in_use_error(e):
            # permission denied, assume this means it's open by another
            # process on windows.
            deletes_in_progress.add(path)
            logging.info('Retrying delete for %s (%d)', path, retry_after)
            eventloop.add_timeout(retry_after, delete,
                    "Delete File Retry", args=(path, retry_after,
                        retry_for - retry_after, False))
            if firsttime:
                from miro.workerprocess import _subprocess_manager
                if _subprocess_manager.is_running:
                    logging.debug('restarting subprocess_manager to hopefully '
                                  'free file references')
                    _subprocess_manager.restart(clean=True)
Beispiel #5
0
def delete(path, retry_after=10, retry_for=60):
    """Try to delete a file or directory.  If this fails because the
    file is open, we retry deleting the file every so often This
    probably only makes a difference on Windows.
    """

    import eventloop
    path = expand_filename(path)
    try:
        if os.path.isfile(path):
            os.remove (path)
        elif os.path.isdir(path):
            shutil.rmtree (path)
        else:
            logging.warn("asked to delete '%s' but it's not there." % path)
    except EnvironmentError, e:
        logging.warn("Error deleting %s", path)
        if retry_for > 0 and is_windows_file_in_use_error(e):
            # permission denied, assume this means it's open by another
            # process on windows.
            deletes_in_progress.add(path)
            logging.info('Retrying delete')
            eventloop.add_timeout(retry_after, delete,
                    "Delete File Retry", args=(path, retry_after,
                        retry_for - retry_after))