Venue and sec name alone don't always identify a unique security.
Rejects are ONLY observable in the order ack, not the execution report stream from which all other updates are observed. While the pybit sdk does expose ack callbacks, it doesn't invoke them on rejects/errors.
All calls to/from python are performed on one thread via a simple message queue (necessary because of the global interpreter lock).