skytools-legacy
skytools-legacy copied to clipboard
PgQ python framework can not be used anymore with python2.4
Hello,
Since version 3.1.5, PgQ python framework can not be used anymore with python2.4. The use of finally instruction in admin.py file is blocking.
-bash-3.2$ ./QMover_axfrak4_pgq_emv_newtrans_axis2proxy_QA_RHA.py QMOVER.ini --stop Traceback (most recent call last): File "./QMover_axfrak4_pgq_emv_newtrans_axis2proxy_QA_RHA.py", line 11, in ? from qmover import QueueMover File "/var/lib/pgsql/9.2/data/PgQ_ReplicationRHA_RC6/qmover.py", line 27, in ? import pgq File "/usr/lib64/python2.4/site-packages/pgq/init.py", line 14, in ? import pgq.cascade.admin File "/usr/lib64/python2.4/site-packages/pgq/cascade/admin.py", line 495 finally: ^ SyntaxError: invalid syntax
In order to keep compatibility, is it possible to use the following code in python/pgq/cascade/admin.py : def load_node_status (self, name, location): """ Load node info & status """ # must be thread-safe (!) if not self.node_alive(name): node = NodeInfo(self.queue_name, None, node_name = name) return node try: db = None db = skytools.connect_database (location) db.set_isolation_level (skytools.I_AUTOCOMMIT) curs = db.cursor() curs.execute("select * from pgq_node.get_node_info(%s)", [self.queue_name]) node = NodeInfo(self.queue_name, curs.fetchone()) node.load_status(curs) self.load_extra_status(curs, node) if db: db.close() except DBError, d: msg = str(d).strip().split('\n', 1)[0].strip() print('Node %r failure: %s' % (name, msg)) node = NodeInfo(self.queue_name, None, node_name = name) if db: db.close() return node
instead of: def load_node_status (self, name, location): """ Load node info & status """ # must be thread-safe (!) if not self.node_alive(name): node = NodeInfo(self.queue_name, None, node_name = name) return node try: db = None db = skytools.connect_database (location) db.set_isolation_level (skytools.I_AUTOCOMMIT) curs = db.cursor() curs.execute("select * from pgq_node.get_node_info(%s)", [self.queue_name]) node = NodeInfo(self.queue_name, curs.fetchone()) node.load_status(curs) self.load_extra_status(curs, node) except DBError, d: msg = str(d).strip().split('\n', 1)[0].strip() print('Node %r failure: %s' % (name, msg)) node = NodeInfo(self.queue_name, None, node_name = name) finally: if db: db.close() return node Best Regards.