Douglas Garstang
2006-Jan-12 15:45 UTC
[Asterisk-Users] Sending commands to Asterisk via FastAGI
I have a fast agi python script that reads some numbers from MySQL, and then
instructs asterisk to try those numbers in sequential order.
ie:
def run(self):
agi = AGI(self.client)
db =
MySQLdb.connect(host="192.168.10.15",user="user",passwd="password",db="somedb")
c = db.cursor()
c.execute("""Select * from ast_dp""")
data = c.fetchall()
for i in data:
str = "EXEC " + i[4] + " \"" +i[5] +
"/" + i[6] + "|" + i[7] + "\"
\"\"\n"
self.client.send(str)
print str
c.close()
I have noticed that when you send a list of instructions to Asterisk via AGI
that Asterisk doesn't block on each command. It accepts all the commands at
once, and must pool them internally I guess. This is different to regular AGI
where Asterisk will not take the next command until the current one has finished
processing (eg a dial with a timeout of 20s for example).
This seems to have the affect that when I hang up the caller, the first number
stops ringing, and then the second will ring for a fraction of a second before
also stopping. It's like Asterisk starts to process the command before it
realises it's been cancelled. Not good!
Anyone seen this before? I was seeing a similar problem yesterday with a perl
Agi script (not FastAGI). After hanging up the caller, the current callee would
continue to ring for a fraction of a second after the caller had hung up. Also
not good!
Thanks,
Douglas.
