diff --git a/defaults/main.yml b/defaults/main.yml index c5755b7..3da7c6c 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -141,5 +141,7 @@ django_celerybeat_service_name: "celerybeat-{{ django_service_name }}" django_celeryd_opts: "--time-limit=300 --concurrency=8" django_celeryd_log_level: "INFO" django_celerybeat_log_level: "INFO" -django_celeryd_pid_file: -django_celery_beat_pid_file: +django_celeryd_pid_directory: "/run/celery-{{ django_system_user }}" +django_celeryd_pid_file: "{{ django_celeryd_pid_directory }}/%n.pid" +django_celery_beat_pid_directory: "/var/run/{{ django_system_user }}" +django_celery_beat_pid_file: "{{ django_celery_beat_pid_directory }}/celerybeat.pid" diff --git a/tasks/celery.yml b/tasks/celery.yml index b206e48..5b7917d 100644 --- a/tasks/celery.yml +++ b/tasks/celery.yml @@ -1,4 +1,17 @@ --- +- name: Ensure celery pid directories are present + file: + state: directory + owner: "{{ django_system_user }}" + group: "{{ django_system_group }}" + path: "{{ item }}" + when: + - item is defined + - item is not none + with_items: + - "{{ django_celeryd_pid_directory }}" + - "{{ django_celery_beat_pid_directory }}" + - name: Copy celeryd default script template: src: templates/etc/default/celeryd.j2 diff --git a/templates/etc/default/celerybeat.j2 b/templates/etc/default/celerybeat.j2 index 3ce3117..0e6ad3c 100644 --- a/templates/etc/default/celerybeat.j2 +++ b/templates/etc/default/celerybeat.j2 @@ -20,13 +20,9 @@ C_FORCE_ROOT=1 CELERYBEAT_LOG_LEVEL="{{ django_celerybeat_log_level }}" CELERYBEAT_LOG_FILE="{{ django_log_path }}/celerybeat.log" CELERY_CREATE_DIRS=1 -CELERYBEAT_SCHEDULE="/var/run/{{ django_system_user }}/celerybeat-schedule" -CELERYBEAT_STATE_DIR="/var/run/{{ django_system_user }}/celerybeat" -{% if django_celery_beat_pid_file %} +CELERYBEAT_SCHEDULE="{{ django_celery_beat_pid_directory }}/celerybeat-schedule" +CELERYBEAT_STATE_DIR="{{ django_celery_beat_pid_directory }}/celerybeat" CELERYBEAT_PID_FILE="{{ django_celery_beat_pid_file }}" -{% else %} -CELERYBEAT_PID_FILE="/var/run/{{ django_system_user }}/celerybeat.pid" -{% endif %} # Name of the projects settings module. # in this case is just settings and not the full path because it will change the dir to # the project folder first. diff --git a/templates/etc/default/celeryd.j2 b/templates/etc/default/celeryd.j2 index a780051..0d7d5d3 100644 --- a/templates/etc/default/celeryd.j2 +++ b/templates/etc/default/celeryd.j2 @@ -22,11 +22,7 @@ CELERY_APP="{{ django_celery_app }}" # %n will be replaced with the nodename. CELERYD_LOG_FILE="{{ django_log_path }}/celery-%n.log" -{% if django_celeryd_pid_file %} CELERYD_PID_FILE="{{ django_celeryd_pid_file }}" -{% else %} -CELERYD_PID_FILE="/run/celery-{{ django_system_user }}/%n.pid" -{% endif %} # Workers should run as an unprivileged user. CELERYD_USER="{{ django_system_user }}" diff --git a/tests/test.yml b/tests/test.yml index 11116d1..fb0a5c3 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -41,6 +41,7 @@ - uwsgi - 'redis==2.10.6' - 'django==1.11' + - requests django_top_python_statements: - import os - from decimal import Decimal