Как запросить статус задачи сельдерея - PullRequest
1 голос
/ 02 августа 2020

С помощью этого кода можно ли запросить работника state, находится ли он в state = 1 или state = 2?

from celery import Celery
import time

#celery -A CeleryTask worker --loglevel=info

app = Celery("CeleryTask", backend="redis://localhost", broker="redis://localhost")


@app.task
def train():
    for i in range(100):
        if i<5:
            state=1

        else:
            state=2
        time.sleep(10)

    return "hallo"

if __name__ == '__main__':
    result = train.delay()
  

1 Ответ

0 голосов
/ 03 августа 2020

Сельдерей, будучи потрясающим, предоставляет вам механизм для создания ваших собственных пользовательских состояний и обновления их с помощью метода update_state () .

From (связанная) документация:

@app.task(bind=True)
def upload_files(self, filenames):
    for i, file in enumerate(filenames):
        if not self.request.called_directly:
            self.update_state(state='PROGRESS',
                meta={'current': i, 'total': len(filenames)})

В вашем случае все, что вам нужно сделать, это вызвать update_state () с meta={"state":X}, где X равно 1 или 2 ...

...