Anonymous
Сельдерей победил, не справляясь с периодическими задачами
Сообщение
Anonymous » 24 июл 2024, 12:56
Я пытаюсь начать работу с сельдереем, но не могу запустить свою задачу. Я установил django-celery-beat и celery4.
Мой файл настроек.
Установленные приложения (с пакетами сельдерея)
Код: Выделить всё
...
'django_celery_beat',
'django_celery_results'
конфигурация сельдерея
Код: Выделить всё
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
celery.py
Код: Выделить всё
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sandbox.settings')
app = Celery('sandbox')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
и моя простая задача, которую я настроил для запуска через панель администратора django celery beat.
Код: Выделить всё
from __future__ import absolute_import, unicode_literals
from sandbox.celery import app
@app.task()
def try_celery():
print "Trying out Celery"
Я пытаюсь запустить эту задачу как периодическую задачу (такт) с вкладкой cron как */2 * * * *
Я получаю журнал:
Код: Выделить всё
$ celery -A sandbox worker --loglevel=debug
[2017-10-24 14:28:02,999: DEBUG/MainProcess] | Worker: Preparing bootsteps.
[2017-10-24 14:28:03,001: DEBUG/MainProcess] | Worker: Building graph...
[2017-10-24 14:28:03,002: DEBUG/MainProcess] | Worker: New boot order: {Beat, Timer, Hub, Pool, Autoscaler, StateDB, Consumer}
[2017-10-24 14:28:03,017: DEBUG/MainProcess] | Consumer: Preparing bootsteps.
[2017-10-24 14:28:03,017: DEBUG/MainProcess] | Consumer: Building graph...
[2017-10-24 14:28:03,038: DEBUG/MainProcess] | Consumer: New boot order: {Connection, Events, Mingle, Tasks, Control, Agent, Gossip, Heart, event loop}
-------------- celery@mypc v4.1.0 (latentcall)
---- **** -----
--- * *** * -- Linux-4.9.0-kali3-amd64-x86_64-with-Kali-kali-rolling-kali-rolling 2017-10-24 14:28:03
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: sandbox:0x7fe519d38610
- ** ---------- .> transport: redis://localhost:6379/0
- ** ---------- .> results: redis://localhost:6379/
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. celery.accumulate
. celery.backend_cleanup
. celery.chain
. celery.chord
. celery.chord_unlock
. celery.chunks
. celery.group
. celery.map
. celery.starmap
. sandbox.applications.cats.try_celery
. sandbox.celery.debug_task
[2017-10-24 14:28:03,053: DEBUG/MainProcess] | Worker: Starting Hub
[2017-10-24 14:28:03,053: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:03,053: DEBUG/MainProcess] | Worker: Starting Pool
[2017-10-24 14:28:03,197: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:03,198: DEBUG/MainProcess] | Worker: Starting Consumer
[2017-10-24 14:28:03,199: DEBUG/MainProcess] | Consumer: Starting Connection
[2017-10-24 14:28:03,216: INFO/MainProcess] Connected to redis://localhost:6379/0
[2017-10-24 14:28:03,217: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:03,217: DEBUG/MainProcess] | Consumer: Starting Events
[2017-10-24 14:28:03,228: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:03,229: DEBUG/MainProcess] | Consumer: Starting Mingle
[2017-10-24 14:28:03,229: INFO/MainProcess] mingle: searching for neighbors
[2017-10-24 14:28:04,255: INFO/MainProcess] mingle: all alone
[2017-10-24 14:28:04,256: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:04,256: DEBUG/MainProcess] | Consumer: Starting Tasks
[2017-10-24 14:28:04,273: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:04,274: DEBUG/MainProcess] | Consumer: Starting Control
[2017-10-24 14:28:04,277: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:04,277: DEBUG/MainProcess] | Consumer: Starting Gossip
[2017-10-24 14:28:04,281: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:04,282: DEBUG/MainProcess] | Consumer: Starting Heart
[2017-10-24 14:28:04,284: DEBUG/MainProcess] ^-- substep ok
[2017-10-24 14:28:04,284: DEBUG/MainProcess] | Consumer: Starting event loop
[2017-10-24 14:28:04,285: DEBUG/MainProcess] | Worker: Hub.register Pool...
[2017-10-24 14:28:04,294: WARNING/MainProcess] /home/alexd/.virtualenvs/skate/local/lib/python2.7/site-packages/celery/fixups/django.py:202: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments!
warnings.warn('Using settings.DEBUG leads to a memory leak, never '
[2017-10-24 14:28:04,294: INFO/MainProcess] celery@mypc ready.
[2017-10-24 14:28:04,295: DEBUG/MainProcess] basic.qos: prefetch_count->8
почему мои задачи не работают?
Обновить
журнал запуска сельдерея в ритме
Код: Выделить всё
$ celery -A sandbox beat --loglevel=debug
celery beat v4.1.0 (latentcall) is starting.
Stale pidfile exists - Removing it.
__ - ... __ - _
LocalTime -> 2017-10-24 15:07:20
Configuration ->
. broker -> redis://localhost:6379/0
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%DEBUG
. maxinterval -> 5.00 minutes (300s)
[2017-10-24 15:07:20,216: DEBUG/MainProcess] Setting default socket timeout to 30
[2017-10-24 15:07:20,217: INFO/MainProcess] beat: Starting...
[2017-10-24 15:07:20,372: DEBUG/MainProcess] Current schedule:
[2017-10-24 15:07:20,373: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2017-10-24 15:07:20,373: DEBUG/MainProcess] beat: Waking up in 5.00 minutes.
[2017-10-24 15:15:43,232: DEBUG/MainProcess] beat: Synchronizing schedule...
[2017-10-24 15:15:43,245: DEBUG/MainProcess] beat: Waking up in 5.00 minutes.
создание задачи
[img]
https://i.sstatic . net/4isWB.png[/img]
так задача создается как периодическая в админке.
ps. Я перешел на интервальный вариант, могут быть проблемы с вкладкой cron? в любом случае все еще не работает.
Подробнее здесь:
https://stackoverflow.com/questions/469 ... odic-tasks
1721815009
Anonymous
Я пытаюсь начать работу с сельдереем, но не могу запустить свою задачу. Я установил django-celery-beat и celery4. Мой файл настроек. Установленные приложения (с пакетами сельдерея) [code]... 'django_celery_beat', 'django_celery_results' [/code] конфигурация сельдерея [code]CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' [/code] celery.py [code]from __future__ import absolute_import, unicode_literals import os from celery import Celery # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sandbox.settings') app = Celery('sandbox') # Using a string here means the worker doesn't have to serialize # the configuration object to child processes. # - namespace='CELERY' means all celery-related configuration keys # should have a `CELERY_` prefix. app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django app configs. app.autodiscover_tasks() @app.task(bind=True) def debug_task(self): print('Request: {0!r}'.format(self.request)) [/code] и моя простая задача, которую я настроил для запуска через панель администратора django celery beat. [code]from __future__ import absolute_import, unicode_literals from sandbox.celery import app @app.task() def try_celery(): print "Trying out Celery" [/code] Я пытаюсь запустить эту задачу как периодическую задачу (такт) с вкладкой cron как */2 * * * * Я получаю журнал: [code]$ celery -A sandbox worker --loglevel=debug [2017-10-24 14:28:02,999: DEBUG/MainProcess] | Worker: Preparing bootsteps. [2017-10-24 14:28:03,001: DEBUG/MainProcess] | Worker: Building graph... [2017-10-24 14:28:03,002: DEBUG/MainProcess] | Worker: New boot order: {Beat, Timer, Hub, Pool, Autoscaler, StateDB, Consumer} [2017-10-24 14:28:03,017: DEBUG/MainProcess] | Consumer: Preparing bootsteps. [2017-10-24 14:28:03,017: DEBUG/MainProcess] | Consumer: Building graph... [2017-10-24 14:28:03,038: DEBUG/MainProcess] | Consumer: New boot order: {Connection, Events, Mingle, Tasks, Control, Agent, Gossip, Heart, event loop} -------------- celery@mypc v4.1.0 (latentcall) ---- **** ----- --- * *** * -- Linux-4.9.0-kali3-amd64-x86_64-with-Kali-kali-rolling-kali-rolling 2017-10-24 14:28:03 -- * - **** --- - ** ---------- [config] - ** ---------- .> app: sandbox:0x7fe519d38610 - ** ---------- .> transport: redis://localhost:6379/0 - ** ---------- .> results: redis://localhost:6379/ - *** --- * --- .> concurrency: 2 (prefork) -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) --- ***** ----- -------------- [queues] .> celery exchange=celery(direct) key=celery [tasks] . celery.accumulate . celery.backend_cleanup . celery.chain . celery.chord . celery.chord_unlock . celery.chunks . celery.group . celery.map . celery.starmap . sandbox.applications.cats.try_celery . sandbox.celery.debug_task [2017-10-24 14:28:03,053: DEBUG/MainProcess] | Worker: Starting Hub [2017-10-24 14:28:03,053: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:03,053: DEBUG/MainProcess] | Worker: Starting Pool [2017-10-24 14:28:03,197: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:03,198: DEBUG/MainProcess] | Worker: Starting Consumer [2017-10-24 14:28:03,199: DEBUG/MainProcess] | Consumer: Starting Connection [2017-10-24 14:28:03,216: INFO/MainProcess] Connected to redis://localhost:6379/0 [2017-10-24 14:28:03,217: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:03,217: DEBUG/MainProcess] | Consumer: Starting Events [2017-10-24 14:28:03,228: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:03,229: DEBUG/MainProcess] | Consumer: Starting Mingle [2017-10-24 14:28:03,229: INFO/MainProcess] mingle: searching for neighbors [2017-10-24 14:28:04,255: INFO/MainProcess] mingle: all alone [2017-10-24 14:28:04,256: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:04,256: DEBUG/MainProcess] | Consumer: Starting Tasks [2017-10-24 14:28:04,273: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:04,274: DEBUG/MainProcess] | Consumer: Starting Control [2017-10-24 14:28:04,277: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:04,277: DEBUG/MainProcess] | Consumer: Starting Gossip [2017-10-24 14:28:04,281: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:04,282: DEBUG/MainProcess] | Consumer: Starting Heart [2017-10-24 14:28:04,284: DEBUG/MainProcess] ^-- substep ok [2017-10-24 14:28:04,284: DEBUG/MainProcess] | Consumer: Starting event loop [2017-10-24 14:28:04,285: DEBUG/MainProcess] | Worker: Hub.register Pool... [2017-10-24 14:28:04,294: WARNING/MainProcess] /home/alexd/.virtualenvs/skate/local/lib/python2.7/site-packages/celery/fixups/django.py:202: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments! warnings.warn('Using settings.DEBUG leads to a memory leak, never ' [2017-10-24 14:28:04,294: INFO/MainProcess] celery@mypc ready. [2017-10-24 14:28:04,295: DEBUG/MainProcess] basic.qos: prefetch_count->8 [/code] почему мои задачи не работают? Обновить журнал запуска сельдерея в ритме [code]$ celery -A sandbox beat --loglevel=debug celery beat v4.1.0 (latentcall) is starting. Stale pidfile exists - Removing it. __ - ... __ - _ LocalTime -> 2017-10-24 15:07:20 Configuration -> . broker -> redis://localhost:6379/0 . loader -> celery.loaders.app.AppLoader . scheduler -> celery.beat.PersistentScheduler . db -> celerybeat-schedule . logfile -> [stderr]@%DEBUG . maxinterval -> 5.00 minutes (300s) [2017-10-24 15:07:20,216: DEBUG/MainProcess] Setting default socket timeout to 30 [2017-10-24 15:07:20,217: INFO/MainProcess] beat: Starting... [2017-10-24 15:07:20,372: DEBUG/MainProcess] Current schedule: [2017-10-24 15:07:20,373: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes [2017-10-24 15:07:20,373: DEBUG/MainProcess] beat: Waking up in 5.00 minutes. [2017-10-24 15:15:43,232: DEBUG/MainProcess] beat: Synchronizing schedule... [2017-10-24 15:15:43,245: DEBUG/MainProcess] beat: Waking up in 5.00 minutes. [/code] [b]создание задачи[/b] [img]https://i.sstatic. net/4isWB.png[/img] так задача создается как периодическая в админке. [b]ps. Я перешел на интервальный вариант, могут быть проблемы с вкладкой cron? в любом случае все еще не работает.[/b] Подробнее здесь: [url]https://stackoverflow.com/questions/46913392/celery-beat-not-picking-up-periodic-tasks[/url]