Рабочий Celery подключается к брокеру Redis, но не к серверной части результатов в том же месте.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рабочий Celery подключается к брокеру Redis, но не к серверной части результатов в том же месте.

Сообщение Anonymous »

У меня есть приложение Flask с Celery, реализованное с использованием сервера Redis в качестве брокера и бэкэнда результатов. Оба адреса настроены в приложении Flask как «redis://localhost:6379/0».
Когда я запускаю это локально на своем компьютере, все работает нормально. . Я обслуживаю приложение Flask с терминала VSCode, запускаю сервер Redis с помощью redis-server на экземпляре WSL и запускаю работника Celery на другом терминале VSCode с помощью celery -A app.celery worker -l info -P gevent (очевидно, это позволяет ему работать в Windows по непонятной мне причине).
Когда я пытаюсь запустить его удаленно, рабочий Celery, кажется, подключается только к брокер, а не бэкэнд. В этом случае приложение обслуживается с помощью демона на моем веб-хосте, и я запускаю сервер Redis и рабочий процесс Celery с помощью SSH (со временем они также будут у меня на демонах, но сначала мне нужно заставить его работать вручную). Я запускаю сервер, используя redis-server --protected-mode no, так как в данный момент я просто пытаюсь заставить его работать, и я использую celery -A app.celery worker - l info для запуска работника.
Когда я запускаю сервер, я получаю такой вывод:

Код: Выделить всё

7953:C 10 Nov 2024 16:20:27.355 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7953:C 10 Nov 2024 16:20:27.355 * Redis version=7.2.6, bits=64, commit=00000000, modified=0, pid=7953, just started
7953:C 10 Nov 2024 16:20:27.355 * Configuration loaded
7953:M 10 Nov 2024 16:20:27.355 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
7953:M 10 Nov 2024 16:20:27.355 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
7953:M 10 Nov 2024 16:20:27.355 # Current maximum open files is 2048. maxclients has been reduced to 2016 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
7953:M 10 Nov 2024 16:20:27.355 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-``    `.  `_.  ''-._           Redis 7.2.6 (00000000/0) 64 bit
.-`` .-```.  ```\/    _.,_ ''-._
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 7953
`-._    `-._  `-./  _.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |           https://redis.io
`-._    `-._`-.__.-'_.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |
`-._    `-._`-.__.-'_.-'    _.-'
`-._    `-.__.-'    _.-'
`-._        _.-'
`-.__.-'

7953:M 10 Nov 2024 16:20:27.356 # Warning: Could not create server TCP listening socket ::*:6379: bind: Can't assign requested address
7953:M 10 Nov 2024 16:20:27.356 * Server initialized
7953:M 10 Nov 2024 16:20:27.357 * Loading RDB produced by version 7.2.6
7953:M 10 Nov 2024 16:20:27.357 * RDB age 2 seconds
7953:M 10 Nov 2024 16:20:27.357 * RDB memory usage when created 1.02 Mb
7953:M 10 Nov 2024 16:20:27.357 * Done loading RDB, keys loaded: 3, keys expired: 0.
7953:M 10 Nov 2024 16:20:27.357 * DB loaded from disk: 0.001 seconds
7953:M 10 Nov 2024 16:20:27.357 * Ready to accept connections tcp

Когда я запускаю работника, я получаю следующий результат:

Код: Выделить всё

 -------------- celery@[username].[host] v5.4.0 (opalescent)
--- ***** -----
-- ******* ---- FreeBSD-13.3-RELEASE-p3-amd64-64bit-ELF 2024-11-10 16:16:46
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         default:0x97756650 (.default.Loader)
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:     redis://localhost:6379/0
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery           exchange=celery(direct) key=celery

[tasks]
.  app.celery_task

[2024-11-10 16:16:46,857: INFO/MainProcess] Connected to redis://localhost:6379/0
[2024-11-10 16:16:46,858: INFO/MainProcess] mingle: searching for neighbors
[2024-11-10 16:16:47,880: INFO/MainProcess] mingle: all alone
[2024-11-10 16:16:47,893: INFO/MainProcess] celery@[username].[host] ready.
Похоже, что все подключено нормально, но когда я пытаюсь запустить задачу, приложение Flask выдает такой вывод:

Код: Выделить всё

ERROR:celery.backends.redis:Connection to Redis lost: Retry (0/20) now.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (1/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (2/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (3/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (4/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (5/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (6/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (7/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (8/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (9/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (10/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (11/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (12/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (13/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (14/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (15/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (16/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (17/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (18/20) in 1.00 second.
ERROR:celery.backends.redis:Connection to Redis lost: Retry (19/20) in 1.00 second.
CRITICAL:celery.backends.redis:
Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted.
Что мне особенно бросается в глаза, так это строка 7953:M 10 ноября 2024 г. 16:20:27.356 # Предупреждение: не удалось создать сокет прослушивания TCP сервера ::*:6379:bind: Невозможно назначить запрошенный адрес при запуске сервера, так как его нет при локальном запуске. Но я не могу понять, как это исправить, и рабочий Celery сначала говорит, что подключается к порту 6379, так что я даже не уверен, что проблема в этом.

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-the-same
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Клиент Swift iOS успешно подключается к серверной части Java через WebSocket, но не может получать сообщения
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Ошибка с Celery+S3 celery.Exceptions.ImproperlyConfigured: отсутствует имя сегмента
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Рабочий (Celery + RabbitMQ) продолжает отключаться
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между серверной частью ndk и серверной частью cpp в AOSP?
    Anonymous » » в форуме Android
    0 Ответы
    104 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между серверной частью ndk и серверной частью cpp в AOSP?
    Anonymous » » в форуме C++
    0 Ответы
    84 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»