You don't call reqMktData twice.
Try it with just one reqMktData(), it basically gives you all the tickTypes available, not sure how exactly it works behind the scenes.
But e.g if you just put:
def tickPrice(self, reqId, tickType, price, attrib):
? ? print(price)
It'll print every different "price" available. bid, ask, close, etc.