Celery не ставит в очередь удаленного брокера, вместо этого добавляя задачи на локальный хост - PullRequest
0 голосов
/ 30 октября 2018

Мой вопрос такой же, как этот Celery не ставит задачи посреднику на удаленном сервере, вместо этого добавляет задачи к localhost , но ответ мне не подходит.

Мой celery.py

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project', broker='amqp://<user>:<user_pass>@remoteserver:5672/<vhost>', backend='amqp')
# app = Celery('project')
# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

Когда я бегу:

$ сельдерей -А рабочий -l информация

Я получаю следующий вывод:

 -------------- celery@paulo-Inspiron-3420 v4.2.1 (windowlicker)
---- **** ----- 
--- * ***  * -- Linux-4.15.0-36-generic-x86_64-with-Ubuntu-18.04-bionic       2018-10-30 13:44:07
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         mycelery:0x7ff88ca043c8
- ** ---------- .> transport:   amqp://<user>:**@<remote_ip>:5672/<vhost>
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
            .> celery           exchange=celery(direct) key=celery

Я попытался остановить сервер rabbitmq и тоже удалил его, но сельдерей продолжает стоять в очереди на localhost.

Кто-то может помочь?

1 Ответ

0 голосов
/ 30 октября 2018

Вам нужно добавить что-то подобное в файл __init__.py в том же каталоге, что и файл celery.py:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

Также убедитесь, что вы запускаете рабочий процесс изнутри virtualenv вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...