Hi, I'm trying to run a continuous loop waiting for events to be emitted from Firebird and acting on them.
However I'm occasionally getting an exception: Traceback (most recent call last): File "/srv/blah/report_results.py", line 81, in <module> loop_on_events(('result_changed',), handler) File "/srv/blah/servicesapi/sessiondb.py", line 27, in loop_on_events handler() File "/srv/blah/venv/lib/python2.7/site-packages/fdb/fbcore.py", line 2031, in __exit__ self.close() File "/srv/blah/venv/lib/python2.7/site-packages/fdb/fbcore.py", line 2109, in close block.close() File "/srv/blah/venv/lib/python2.7/site-packages/fdb/fbcore.py", line 1975, in close "Error while canceling events:") fdb.fbcore.DatabaseError: ('Error while canceling events:\n- SQLCODE: -901\n- invalid events id (handle)', -901, 335545021) My code is simply: def loop_on_events(events, handler): conn = session_db.engine.connect() # using SQLAlchemy, conn.connection is the raw fdb handle while True: with conn.connection.event_conduit(events) as conduit: actual = conduit.wait(timeout=1) for e in events: if actual.get(e, 0) > 0: current_app.logger.debug('Got event') handler() loop_on_events(('result_changed',), handler) This should just run the handler() (which does other DB operations) every time the event is triggered. Is this structure wrong? thanks Hamish