Здравствуйте.
Топик больше информативный, чем вопросительный.
Для меня это было неожиданностью, вот решил поделиться...
Ну так вот:
У меня вся логика описана в питоновском скрипте, который запускается на любой входящий и исходящий звонок и дальше уже делает определенные вещи.
И вот, после определенного момента я начал замечать какую то ерунду в работе диалплана. Обложил весь питоновский скрипт консольными логами и что же я вижу: в процессе работы переменная изменяет свое значение.... Причем в том месте где переопределения нет.
В итоге оказалось что так как питоновские скрипты запускает один процесс, и если использовать глобальное определение переменных в функциях, то второй запустившийся скрипт изменит ее значение.
Пример:
Код:
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)
при первом запуске(звонке) на экран будет выводиться дата, которая получена в момент начала звонка. А при втором звонке, при условии что первый еще продолжается, консольный лог по обоим звонкам будет отображать одно и то же значение времени. Т.е. значение присвоенное во втором звонке.
Эту особенность можно использовать как временное хранилище, к примеру для определения количества активных каналов. Да вообще чего душе угодно... Если не страшно.
Как говориться, моя "грабелька" для Вас от всей души