Следить за другим процессом (SVN)

1

У меня есть python script, чтобы загрузить исходный код из списка репозиториев, некоторые из них большие.

Иногда svn зависает в середине проверки. Есть ли способ наблюдать за процессом svn, и поэтому я знаю, что это зависает или нет?

  • 0
    Я не совсем уверен, что SVN любит слишком много обновлений одновременно (хотя я просто размышляю). Вы запускаете эти асинхронные? Можете ли вы запустить их синхронно?
  • 0
    Я запускаю их синхронизацию, другими словами, один за другим.
Показать ещё 1 комментарий
Теги:
multiprocessing
svn

2 ответа

1
Лучший ответ

Вы можете использовать PySVN и зарегистрировать обратный вызов для каждого процесса "события". PySVN также может опросить обратный вызов "отменить". Первый обратный вызов может запустить таймер, и если таймер истечет, вы можете сказать "отменить" обратный вызов, чтобы вернуть False, тем самым отменив проверку.

#!/usr/bin/python

url = "svn://server/path/to/repo"
path = "/path/to/local/wc"

import pysvn
import threading

# Set to something reasonable
SVN_TIMEOUT = 1000

svn_timer = None
stop_svn = False

def timer_expired():
    # Too long since last SVN event, so do something sensible...
    print "SVN took too long!"
    global stop_svn
    stop_svn = True

def svn_cancel():
    return stop_svn

def notify( event_dict ):
    global svn_timer
    if svn_timer:
        svn_timer.cancel()
    svn_timer = threading.Timer(SVN_TIMEOUT, timer_expired)
    svn_timer.start()

svn_client = pysvn.Client()
svn_client.callback_notify = notify
svn_client.callback_cancel = svn_cancel

svn_timer = threading.Timer(SVN_TIMEOUT, timer_expired)
svn_timer.start()

revision = svn_client.checkout(url,path)

if svn_timer:
    svn_timer.cancel()
  • 0
    Благодарю. Это то, что я хочу.
  • 0
    Хорошо, возможно PySVN не работает, как я помню, так как я не могу заставить это вызвать тайм-аут ...
Показать ещё 2 комментария
0

Вы можете продолжать опрос stdout процесса svn и проверить, как часто вы получаете новые файлы. Если вы не получите новый файл за x секунд, откажитесь от процесса.

Запустите svn с помощью подпроцесса из вашего основного script и выполните опрос stdout в ожидании завершения процесса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню