Пытаюсь понять как использовать 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()
в админке так же вижу что таска попадает в rabbit, но больше ничего не происходит.
насколько я понимаю, после отработки в логе должен появиться возвращаемый "success" но этого не происходит...