Рубрики
Без рубрики

Как установить и настроить сельдерей

В начале моих статей я написал о использовании сельдерея, но не написал, как его установить и настроить …. Tagged с Django, Python, Redis.

В начале моих статей я написал о использовании сельдерея, но не написал, как его установить и настраивать.

Подготовить

  • У вас проект Django
  • Вы хотите подключить проект с сельдерей

Краткое описание

  • Установить брокер ( redis ) глобально
  • Установить Сельдерей питон библиотека
  • Настройка сельдерея в настройки
  • Написать Асинхронизация функция
  • Запустить сельдерей

Деталь

  1. Установить Redis :
sudo apt install redis-server

Проверять:

➜  ~ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 
  1. Установить сельдерей :
pip install celery
  1. Создать файл конфигурации. Пожалуйста, не назовите в сельдерей Потому что могут быть имена конфликты. Например, run_celery.py :
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
app = Celery('my_celery_application')
app.config_from_object('django.conf:settings')
  1. settings.py
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
  1. Проверить все:
(ienv) ➜  project git:(master) ✗ celery -A run_celery worker -l info

 -------------- celery@MacBook-Pro-User1.local v5.0.2 (singularity)
--- ***** ----- 
-- ******* ---- macOS-10.16-x86_64-i386-64bit 2021-02-14 13:26:14
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         ptt:0x7fe9f133c2e0
- ** ---------- .> transport:   redis://127.0.0.1:6379/0
- ** ---------- .> results:     redis://127.0.0.1:6379/
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . apps.centrifuge.centrifuge.send_sms_async

  1. Напишите вам Async Task:
from run_celery import app
from django.conf import settings
from .models import PhoneCode

@app.task
def send_sms_async(identifier: int):
    code = PhoneCode.objects.filter(pk=identifier).first()
    if code:
        provider: SMSProviderBase = Test()
        provider.send_private_sms(code.phone, code.code)

Вывод

  • Сельдерей с Redis (или другим бэкэнд) – хороший способ для ваших асинхронных проектов Django
  • Вы можете создать столько задач, сколько хотите
  • Вы можете выбрать класс для задач сельдерея
  • Чтобы контролировать использование Цветок Чтобы контролировать свои асинхронные задачи
  • Запустить сельдерей через Supervisor ( -B – Использовать периодические задачи):
[program:example-celery]
command = /bin/celery --app=run_celery:app worker --loglevel=INFO -B
directory = 
user = 
stdout_logfile = logs/celery.log
redirect_stderr=true
environment = LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Спасибо за чтение

Оригинал: “https://dev.to/a1k89/how-to-install-and-configure-celery-for-django-4o8e”