@Eldalex

Почему celery не запускает задачу?

Пытаюсь понять как использовать celery для автоматического выполнения задач. но не могу понять почему задача не стартует.
есть гипотетический исполнитель client.py
для простоты он имитирует работу, но сам попросту дрыхнет.
import time

def get_new_point(id):
    for i in range(1,5):
        print(f"{i=}, {id=}")
        time.sleep(1)


создаю tasks.py
from celery import Celery
from client import get_new_point

app = Celery('tasks', broker='amqp://admin:admin@192.168.56.101:5672')

@app.task(name='My Task')
def add_point(id):
    get_new_point(id)
    return 'success'


и того кто будет запускать задачу, getter.py
from tasks import add_point
id = 10
add_point.apply_async(args=[id], ignore_result=True)
print('go!')


запускаю celery
celery -A tasks.app worker --loglevel=INFO
                                                             
 -------------- celery@DESKTOP-1PH8EPE v5.2.7 (dawn-chorus)  
--- ***** -----                                              
-- ******* ---- Windows-10-10.0.19045-SP0 2023-02-20 14:40:22
- *** --- * ---                                              
- ** ---------- [config]
- ** ---------- .> app:         tasks:0x1723b484250
- ** ---------- .> transport:   amqp://admin:**@192.168.56.101:5672//
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . My Task

[2023-02-20 14:40:22,598: INFO/MainProcess] Connected to amqp://admin:**@192.168.56.101:5672//
[2023-02-20 14:40:22,608: INFO/MainProcess] mingle: searching for neighbors
[2023-02-20 14:40:23,032: INFO/SpawnPoolWorker-1] child process 18752 calling self.run()
[2023-02-20 14:40:23,037: INFO/SpawnPoolWorker-2] child process 4876 calling self.run()
[2023-02-20 14:40:23,041: INFO/SpawnPoolWorker-5] child process 3000 calling self.run()
[2023-02-20 14:40:23,041: INFO/SpawnPoolWorker-6] child process 14124 calling self.run()
[2023-02-20 14:40:23,049: INFO/SpawnPoolWorker-8] child process 3196 calling self.run()
[2023-02-20 14:40:23,053: INFO/SpawnPoolWorker-3] child process 8740 calling self.run()
[2023-02-20 14:40:23,057: INFO/SpawnPoolWorker-4] child process 19924 calling self.run()
[2023-02-20 14:40:23,072: INFO/SpawnPoolWorker-7] child process 8332 calling self.run()
[2023-02-20 14:40:23,639: INFO/SpawnPoolWorker-10] child process 21660 calling self.run()
[2023-02-20 14:40:23,640: INFO/SpawnPoolWorker-9] child process 17184 calling self.run()
[2023-02-20 14:40:23,664: INFO/MainProcess] mingle: all alone
[2023-02-20 14:40:23,701: INFO/MainProcess] celery@DESKTOP-1PH8EPE ready.

и запускаю getter
python getter.py
вижу что задача запускается
[2023-02-20 14:41:07,143: INFO/SpawnPoolWorker-12] child process 8472 calling self.run()
[2023-02-20 14:51:56,034: INFO/MainProcess] Task My Task[d8478448-21f4-4b43-8269-ce7fe7662664] received
[2023-02-20 14:51:56,563: INFO/SpawnPoolWorker-14] child process 19212 calling self.run()

63f35f584a3a6346280450.png
в админке так же вижу что таска попадает в rabbit, но больше ничего не происходит.
насколько я понимаю, после отработки в логе должен появиться возвращаемый "success" но этого не происходит...
  • Вопрос задан
  • 1092 просмотра
Пригласить эксперта
Ответы на вопрос 2
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
ignore_result=True


Может дело в том, что задаче приказано результат вообще игнорировать?
PS. --loglevel=DEBUG чуть побольше информации выдаст в лог воркера.
Ответ написан
@Eldalex Автор вопроса
Кароч, всё норм, я просто неправильно вызывал таску
вот так:
import tasks
add_point.delay(10)

вызывается норм.
Да плюс к этому наложилось то., что у меня не завершался процесс на ctrl+C ( как позже выяснилось так и должно было быть), и я по незнанию закрывал терминал в pycharm и открывал новый. а процессы висели и их было много и всё растягивалось во времени.
в общем после перезагрузки и смены вызова всё нормально заработало:)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы