У меня есть приложение Django, в котором настроены две задачи сельдерея. Обе задачи необходимо запускать только один раз через минуту после полуночи (00:01). Это просто обновление некоторых статусов, которые меняются с «АКТИВНО» на «НЕАКТИВНО» в 00:01.
Моя цель — сократить количество опросов Celery Redis. В настоящее время он опрашивает каждую секунду, что проблематично.
Я сделал три шага
Я пытался изменить настройки в Django для Celery, включая использование таких параметров, как CELERY_IGNORE_RESULT, CELERY_WORKER_CONCURRENCY, CELERY_BROKER_HEARTBEAT и, наконец, CELERY_BEAT_MAX_LOOP_INTERVAL
def set_polling_interval():
now = datetime.now()
if now.hour == 23 and now.minute >= 59 or now.hour == 0 and now.minute
Подробнее здесь: [url]https://stackoverflow.com/questions/79056504/celery-polling-redis-every-second[/url]
У меня есть приложение Django, в котором настроены две задачи сельдерея. Обе задачи необходимо запускать только один раз через минуту после полуночи (00:01). Это просто обновление некоторых статусов, которые меняются с «АКТИВНО» на «НЕАКТИВНО» в 00:01. Моя цель — сократить количество опросов Celery Redis. В настоящее время он опрашивает каждую секунду, что проблематично. Я сделал три шага [list] [*]Я пытался изменить настройки в Django для Celery, включая использование таких параметров, как CELERY_IGNORE_RESULT, CELERY_WORKER_CONCURRENCY, CELERY_BROKER_HEARTBEAT и, наконец, CELERY_BEAT_MAX_LOOP_INTERVAL [code]CELERY_RESULT_BACKEND = None CELERY_IGNORE_RESULT = True # Ignore task results to reduce Redis usage
CELERYD_PREFETCH_MULTIPLIER = 1 # Fetch only 1 task at a time CELERY_ACKS_LATE = True # Acknowledge tasks after completion to avoid re-execution on failure
# Celery transport options CELERY_BROKER_TRANSPORT_OPTIONS = { 'ssl': { 'ssl_cert_reqs': ssl.CERT_NONE # Suggestion: CERT_REQUIRED for stronger security }, 'visibility_timeout': 3600, # Timeout for long-running tasks 'polling_interval': 30 # Poll every 30 seconds }
CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = { 'ssl': { 'ssl_cert_reqs': ssl.CERT_NONE # Same as broker for consistency } } # Reduce the number of threads/processes CELERY_WORKER_CONCURRENCY = 1
CELERY_BEAT_MAX_LOOP_INTERVAL = 3600 # Check for scheduled tasks every hour [/code]
[*]Во-вторых, я даже попробовал настроить динамический опрос, чтобы график опросов был чаще в ночное время и снова сокращался [code]def set_polling_interval(): now = datetime.now() if now.hour == 23 and now.minute >= 59 or now.hour == 0 and now.minute
Итак, у меня есть гравитационная форма, в которой хранятся цены и переменные продукта. У меня есть код, который при количестве 3 или более начинает снижать цену за длину и общую цену, однако цена со скидкой за длину и общая цена со скидкой...
Итак, у меня есть гравитационная форма, в которой хранятся цены и переменные продукта. У меня есть код, который при количестве 3 или более начинает снижать цену за длину и общую цену, однако цена со скидкой за длину и общая цена со скидкой...
Итак, у меня есть гравитационная форма, в которой хранятся цены и переменные продукта. У меня есть код, так что при количестве 3 или более он начинает снижать цену за длину и общую цену, однако цена со скидкой за длину и общая цена со скидкой...
Я создаю своего рода симулятор UTM, используя Python. С одной стороны, у меня есть flask-сервер, который должен отправлять план полета дрону (встроенный вdronekit иdronekit-sitl), который выполняет план полета.
Рабочий процесс следующий: