freeswitchforum.com https://freeswitchforum.com/ |
|
mod_python и область видимости переменных https://freeswitchforum.com/viewtopic.php?f=6&t=575 |
Страница 1 из 1 |
Автор: | astashov [ 12 ноя 2015 18:52 ] |
Заголовок сообщения: | mod_python и область видимости переменных |
Здравствуйте. Топик больше информативный, чем вопросительный. Для меня это было неожиданностью, вот решил поделиться... Ну так вот: У меня вся логика описана в питоновском скрипте, который запускается на любой входящий и исходящий звонок и дальше уже делает определенные вещи. И вот, после определенного момента я начал замечать какую то ерунду в работе диалплана. Обложил весь питоновский скрипт консольными логами и что же я вижу: в процессе работы переменная изменяет свое значение.... Причем в том месте где переопределения нет. В итоге оказалось что так как питоновские скрипты запускает один процесс, и если использовать глобальное определение переменных в функциях, то второй запустившийся скрипт изменит ее значение. Пример: Код: import freeswitch import time a=time.time() def handler(session, args): global a while true: freeswitch.consoleLog("info", "--> {0}: {1}\n".format(str(session.uuid),str(a))) time.sleep(0.5) при первом запуске(звонке) на экран будет выводиться дата, которая получена в момент начала звонка. А при втором звонке, при условии что первый еще продолжается, консольный лог по обоим звонкам будет отображать одно и то же значение времени. Т.е. значение присвоенное во втором звонке. Эту особенность можно использовать как временное хранилище, к примеру для определения количества активных каналов. Да вообще чего душе угодно... Если не страшно. Как говориться, моя "грабелька" для Вас от всей души ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |