Python - Pebble - неправильное понимание функции тайм-аута - PullRequest
0 голосов
/ 03 марта 2019

После прочтения документации Pebble (https://pythonhosted.org/Pebble/), это кажется довольно простым. Тем не менее, я не могу получить ожидаемый результат.

Я начал с примера, приведенного на их веб-сайте

import time
from pebble import concurrent, ProcessExpired
from concurrent.futures import TimeoutError

@concurrent.process(timeout=10)
def function(foo, bar=0):
    time.sleep(5)
    return foo + bar

future = function(1, bar=2)

try:
    result = future.result()
except TimeoutError as error:
    print("function took longer than %d seconds" % error.args[1])
except ProcessExpired as error:
    print("%s. Exit code: %d" % (error, error.exitcode))
except Exception as error:
    print("function raised %s" % error)
    print(error.traceback)
else:
    print(str(result))

Насколько я понимаю:

  1. для функции установлен * 101 тайм-аут
  2. блоки future.result (), пока результат не будет готов
  3. Выполнение функции займет около 5 секунд
  4. Вы перейдете непосредственно к else «ветви» попытки / исключая и получим напечатанный результат, то есть «3»

На самом деле, я никогда не получаю желаемый результат, но вместо этого сообщение «функция заняла более 10 секунд».

Можете ли вы сказать мне, что я пропустил, чтобы получить ожидаемый результат (т.е. foo + bar)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...