Очень разные времена между time.clock () и временем журнала App Engine - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь устранить проблемы с задержкой в ​​своем приложении Flex App Engine, и я подозреваю, что мой сервер слишком долго не отвечает (TTFB, предоставленный Chrome, превышает 20 секунд).

Так что я использую time.clock() (Python2.7), чтобы увидеть, где тратится время. Я также использую print, чтобы получить эти значения в Stackdriver.

И разные времена совсем не совпадают.

enter image description here Это только после ввода моей функции (на самом деле это мой обработчик маршрута)

enter image description here И вот как раз перед тем, как покинуть его.
Истекшее время, которое я вычисляю, - не что иное, как время окончания - время начала (один вызов time.clock() каждый).

И вы можете видеть, что это дает менее одной секунды. Журналы стекового драйвера показывают, что затрачено почти 4 секунды.

Есть идеи, почему эта разница? time.clock() не работает должным образом в App Engine flex?

Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

time.clock() дает вам количество процессорного времени процесса, и поэтому значения несовместимы.

Я сделал этот тест:

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    tc0 = time.clock()
    print(tc0)
    tt0 = time.time()
    print(tt0)
    x= datetime.datetime.now()
    print(x)

    time.sleep(10)

    tc1 = time.clock()
    print(tc1)
    tt1 = time.time()
    print(tt1)
    y = datetime.datetime.now()
    print(y)

    return 'Hello World!'

И эторезультаты:

tc0  0.144582
tt0  1552994288.7333689
x    2019-03-19 11:18:08.733498

tc1  0.144829
tt1  1552994298.7438576
y    2019-03-19 11:18:18.743877

Как видите, вы хотите использовать time.time() или datetime.datetime.now(), чтобы получить реальное время, потраченное на данную часть кода, поскольку time.clock() дает вам суммупроцессорного времени.

...