Код: Выделить всё
from celery import Celery
from time import sleep
app = Celery("tasks", broker="redis://localhost:6379", backend="redis://localhost:6379")
app.conf.result_expires = 3600 # 1 hour result retention
@app.task
def process(x, y):
for _ in range(5):
sleep(10)
print("Processing")
return x**2 + y**2
< /code>
docker-compose.yml
services:
redis:
image: redis
ports:
- "6379:6379"
redis-commander:
image: rediscommander/redis-commander
ports:
- "8081:8081"
environment:
- REDIS_HOSTS=local:redis:6379
< /code>
Как я запускаю работник сельдерея < /p>
celery -A tasks worker --loglevel=info -E
Результат работника
-------------- [email protected] v5.5.3 (immunity)
--- ***** -----
-- ******* ---- macOS-14.6.1-arm64-arm-64bit-Mach-O 2025-07-23
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: tasks:0x10305c830
- ** ---------- .> transport: redis://localhost:6379//
- ** ---------- .> results: redis://localhost:6379/
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: ON
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
< /code>
Запуск задачи в Shell < /p>
process.delay(12, 12)
< /code>
Журналы сельдерея < /p>
Task tasks.process[89899d0a-cb18-4ed7-8d9c-e8a442e9eb21] received
Processing
Processing
Processing
Processing
Processing
Task tasks.process[89899d0a-cb18-4ed7-8d9c-e8a442e9eb21] succeeded in 50.07s: 288
< /code>
может извлечь задачи из оболочки, подобной этой < /p>
result = process.AsyncResult("89899d0a-cb18-4ed7-8d9c-e8a442e9eb21")
result.get() # returns 288
< /code>
А вот как я проверяю свои ключи в контейнере Redis < /p>
docker exec -it redis-cli
127.0.0.1:6379> SELECT 0
127.0.0.1:6379> KEYS *
(empty list)
< /code>
Я проверил базы данных от 0 до 15, результат такой же. < /p>
работает ли Redis правильно? Если так, почему я не могу увидеть ключи сельдерея.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ks-succeed