Как видно из названия, у меня проблемы с web.py.
У меня есть скрипт, который запускает экземпляр web.py и обслуживает основные страницы. Используя систему шаблонов web.py, я могу получать функции, такие как time.time (), которые обновляются при каждой перезагрузке (то есть, когда я обновляюсь, время печати увеличивается). Тем не менее, у меня есть собственная функция, которая выполняет некоторые математические операции и возвращает многострочную строку. Когда функция вызывается из сценария или из командной строки, она каждый раз возвращает другое значение, однако, когда я вызываю ее с помощью системы шаблонов web.py, кажется, что она запускается только один раз, а затем не будет перезапустите его снова при перезагрузке дополнительных страниц (хотя time.time () обновляется каждый раз). Единственный способ перезапустить его - перезапустить скрипт.
Вот эта функция:
def casecount():
curcount = 80
sc = startcount(date)
delta = sc - curcount
pace = float(delta) / float(ElTime(time, "9:00"))
eta = float(curcount) / float(pace)
return '''We started with %d cases as of 9AM<br>
Remaining cases as of %s: %d<br>
We\'re working at a pace of %.3f cases per hour. At this rate, we will finish in approximately %.3f hours<br>''' % (sc, time, curcount, pace, eta)
Очевидно, что есть и другие написанные мной функции, которые вызывает скрипт, но я точно знаю, что он работает, когда запускается сам по себе.
Я предоставляю функции доступа к системе шаблонов web.py, используя этот код:
render = web.template.render('templates/', cache=False, globals={'cc': casecount, 'time': time} )
и, наконец, я вызываю код в шаблоне с этим:
<html>
<head>
</head>
<body>
$time()
$cc()
</body>
</html>
Есть идеи? Я был на нем некоторое время и искал Google безрезультатно.
ИСПРАВЛЕНО:
Хорошо, я исправил это с помощью реддитора. Моя проблема заключалась в использовании глобальной переменной времени. Переменная, разумеется, была загружена правильно при первом импорте сценария, но впоследствии не обновлялась при перезагрузке функции, потому что, ну почему это так, она вышла из области видимости.