How to estimate Qiskit circuit runtime before sending to run on IBM real quantum device?

Qiskit, I tried to estimate circuit runtime using gate_length from Backend.properties()

but its accuracy is very low (real system is 3.5 seconds, estimation is 0.00002 seconds). So, are there other ways to estimate circuit runtime? I think this is very important because if I want to run a circuit on a real device (pay-as-you-go), I need to know how long my circuit will take before submitting the circuit.

result.time_taken is the execution time. There is also job.time_per_step() that gives you the timestamps of each step of the job's life cycle.
job.wait_for_final_state() supports a callback function that you can use to set the variable when status changes.