Because yield, or vTaskDelay(0), don't actually block the calling task, the scheduler will either switch to a higher priority task or, if there are none, continue the calling task. Because the idle task is lower
{'exchange': '', 'routing_key': 'celery', 'priority': 0, 'redelivered': False}}, '[[2], {}, {"callbacks": null, "errbacks": null, "chain": null, "chord": null}]', 'application/json', 'utf-8') kwargs:{}) [2019-02-23 12:47:09,704: INFO/MainProcess] Received task...