Расписание задач Celery (Обеспечение выполнения задачи только по одной за раз)

У меня есть задача, примерно такая:

@task()
def async_work(info):
   ...

В любой момент я могу вызвать асинхронную _работу с некоторой информацией. По какой-то причине мне нужно убедиться, что одновременно выполняется только одна асинхронная работа _, а другой запрос вызова должен ждать.

Итак, я придумал следующий код:

is_locked = False    
@task()
    def async_work(info):
        while is_locked:
            pass
        is_locked = True
       ...
        is_locked = False

Но он говорит, что недопустим доступ к локальным переменным... Как это решить?

17
задан Mike Lee 17 August 2012 в 09:30
поделиться