Пример #1
0
import sys
import cx_Oracle
from kombu.connection import BrokerConnection
from kombu.messaging import Exchange, Queue, Consumer
from datetime import datetime
from time import sleep
exchange = Exchange("amq.topic", "topic", durable=True)
q = Queue("oracle_job_inserter", exchange=exchange, key="log.job.#")
q.routing_key="log.job.#"
dsn = cx_Oracle.makedsn('host',1521,'workspace') 

def ts_literal(ts):
  return datetime.fromtimestamp(ts).isoformat().replace('T',' ')

def process_job(msg,body):
  while True:
    try:
        with cx_Oracle.Connection("user/password@"+dsn) as ora_con:
          cursor =  ora_con.cursor()
          print msg
          if not 'exit_status' in msg.keys():
            body.ack()
            break 
#          print dir(body)
          cluster = body.delivery_info["routing_key"].replace("log.job.","").upper()
          cursor.execute("""select queue_record_num from job_queue where QUEUE_NAME='%s' and "cluster"='%s'""" % (msg["queue"],cluster))
          queue_id = cursor.fetchall()
          if not queue_id:
            cursor.execute("""insert into job_queue (QUEUE_NAME,"cluster") VALUES ('%s','%s')""" % (msg["queue"],cluster))
            ora_con.commit()
            cursor.execute("""select queue_record_num from job_queue where QUEUE_NAME='%s' and "cluster"='%s'""" % (msg["queue"],cluster))