I have a task, somewhat like this: @task() def async_work(info): ... At any moment, I may call async_work with some info. For some reason, I need to make sure that only one async_work is running at a time, other calling request must wait for. So I come up with the following code: is_locked = False @task() def async_work(info): while is_locked: pass is_locked = True ... is_locked = False But it says it's invalid to access local variables... How to solve it? Continue reading...