2014-09-14 4 views
2

Я в основном хочу установить предварительную выборку на 1. Однако я не думаю, что есть способ сделать это при запуске celery worker -prefetch=1 или что-то в этом роде. Мне нужно создать файл настроек, но не уверен, что этот файл должен иметь имя (settings.py?) И где должен находиться этот файл.Сельдерей: как создать файл настроек?

Нужен ли всем работникам сельдерея этот файл настроек?

О значении prefetch Я прочитал Understanding celery task prefetching, чтобы понять его лучше.

ответ

2

Вы можете определить настройки для Сельдерея, создав модуль с именем celeryconfig и установив там соответствующие директивы. Файл модуля, celeryconfig.py, должен быть доступен на пути Python. См. configuration docs.

Вы можете установить значение предварительной выборки, используя директиву CELERYD_PREFETCH_MULTIPLIER.

+0

создать файл celeryconfig.py и установить CELERYD_PREFETCH_MULTIPLIER = 1 в этом файле и поместить его в/usr/bin/python? – user299709

+0

@ user299709 Да, вы создаете такой файл, но вы не копируете его в ящик Python. Чтобы он был на пути Python, это означает, что он помещается в место, на которое Python обращается к поиску модулей и пакетов. Это зависит от вашей среды Python. Вы можете получить значение пути Python с помощью ['sys.path'] (https://docs.python.org/2/library/sys.html#sys.path), например. просто '$ python -c 'import sys; print (sys.path) ''и посмотреть результат. Он будет содержать различные каталоги Python, но он должен включать либо текущий каталог (пустая строка '' ''), либо каталог вызываемого скрипта. – famousgarkin

+0

Мне нужно импортировать celeryconfig в сценарий моей задачи? или работник сельдерея уже знает об этом? могу ли я добавить celeryconfig.py в тот же каталог, что и my task.py (о котором знает работник сельдерея) – user299709

2

Если вам необходимо изменить его в командной строке, используйте «сельдерей рабочий [опции] - [Конфигурация]

celery worker -n slow.task.Worker -A myworker -Q queueA -- celeryd.prefetch_multiplier=1 

celery worker -n Fast.task.Worker -A myworker -Q queueB -- celeryd.prefetch_multiplier=8 

Таким образом, вы можете иметь один и тот же celeryconfig.py, но с некоторой разницей, установленной в командной строки.