Is it a good practice to Wait/Sleep inside the RoleEntryPoint.OnStart method of a webrole? We want to make sure our service is fully ready before we tell Azure that we are ready to service request.
Yes you can wait for a while in the OnStart method to initialize services.
OnStart performs the initialization of your system. If you have a service that you need to setup and initialize before you enter running state of your role you need to initialize that in the OnStart before you exit that method.
The role environment will continue to calling the Run method of your RoleEntryPoint right after you exit OnStart. The exact time it takes to call the next method is unknown. This will also move your service from RoleInstanceStatus.Busy to RoleInstanceStatus.Ready at which time the role instance will begin to receive traffic.
As far as I know there is no initialization timeout for the role instances. (The OnStop method on the other hand, when your instance for what ever reason shuts down, does, for practical reasons, have a limited time to finish executing. Not sure but at one time I heard five or fifteen seconds.)