ОК, исходя из вашего описания, есть несколько битов, которые я не знаю (и они помогут):
- как вы начинаете своих работников (то есть
celery worker -A your_package_name
) - Вы уверены, что подписываетесь на того же брокера, с которым позже свяжетесь с
rabbitmqctl
На основании ваших отзывов, я полагаю, что ваши задачи либо выполняются очень долго, либо каким-то странным образом зависают и никогдаКонец.Они определенно попадают в очередь по умолчанию, созданную рабочим сельдерея при запуске (называемую celery
).
Публикация кода примера задачи, которую вы пытаетесь вставить в очередь, а также пример кода того, как вы пытаетесь вставить его вОчередь тоже помогла бы.
Обычно я определяю свою задачу следующим образом (в моем пакете, который определяет, какие задачи должны выполняться, этот код будет выполняться рабочим из сельдерея):
from your_package_name.celery import app
@app.task
my_task_name(my_param):
#do something here!
return True
Я бы вставил свою задачу в очередь следующим образом (т.е. из оболочки python или из моего другого пакета, который должен вставлять задачи в очередь):
my_task_name.apply_async(
args=(my_param,),
queue='my_queue_name',)
Где-то в your_package_name
есть немногокода, в котором вы определяете своего брокера (в моем случае я сохраняю его в celeryconfig.py
, но это зависит от вас)
BROKER_URL = 'amqp://your_user_name:very_secret_pwd@localhost:5672/your_vhost'
Не путайте vhost с вашим именем хоста.
Если вы, как и я, используете rabbitmq, то вам нужно создать vhost, пользователя и пароль, прежде чем пытаться использовать брокер (запустите ниже в bash от имени root)
sudo -u rabbitmq -n rabbitmqctl add_user your_user_name very_secret_pwd
sudo -u rabbitmq -n rabbitmqctl add_vhost your_vhost
sudo -u rabbitmq -n rabbitmqctl set_user_tags your_user_name your_example_tag
sudo -u rabbitmq -n rabbitmqctl set_permissions -p your_vhost your_user_name ".*" ".*" ".*"
Я бы начал свой рабочий, как этот:
python -m celery worker -A your_package_name -Q my_queue_name -c 1 -f /tmp/celery.log --loglevel="INFO"
А затем я посмотрел бы журналы сельдерея в пределах /tmp/celery.log
и также перечислил свои очереди следующим образом (в bash от имени root):
rabbitmqctl list_queues -p your_vhost
Надеюсь, это поможет вам справитьсядорожки.