Я пытаюсь настроить Python celery с ритмичным планированием задач. Только когда задачи указаны в том же файле, где я настраиваю сельдерей, он подхватывается по такту. Это мой макет каталога
├── celerybeat-schedule
├── __init__.py
└── project
├── celery.py
├── __init__.py
├── __pycache__
│ ├── celery.cpython-310.pyc
│ ├── __init__.cpython-310.pyc
│ └── tasks.cpython-310.pyc
└── tasks.py
celery.py
from celery import Celery
from celery.schedules import crontab
app = Celery(
"project",
backend="redis://localhost:6379/0",
broker="redis://localhost:6379/0",
include=["project.tasks"],
)
app.conf.update(
result_expires=3600,
)
#app.autodiscover_tasks(['project.certs'])
@app.on_after_finalize.connect
def setup_periodic_tasks(sender: Celery, **kwargs):
sender.add_periodic_task(10.0, test.s(1,2), name="1x2")
sender.add_periodic_task(10.0, project.tasks.test2.s(2,3), name="2**3")
@app.task
def test(x,y):
print(x*y)
return x*y
if __name__ == "__main__":
app.start()
tasks.py
from .celery import app
@app.task
def test2(x, y):
result = x ** y
print(result)
return result
когда я запускаю работника, он знает о задачах из другого файла
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. project.celery.test
. project.tasks.test2
однако Beat не планирует это при запуске. Есть какие-нибудь подсказки, чего мне не хватает?
Кажется, это работает
app.conf.beat_schedule = {
'1*2': {
'task': 'project.celery.test',
'schedule': 10.0,
'args': (1, 2)
},
'2**3': {
'task': 'project.tasks.test2',
'schedule': 10.0,
'args': (2, 3)
},
}
а этого нет. Добавляется только тестовый, а не другой
@app.on_after_finalize.connect
def setup_periodic_tasks(sender: Celery, **kwargs):
sender.add_periodic_task(10.0, test.s(3,7), name="3*7_setup")
sender.add_periodic_task(10.0, project.tasks.test2.s(3,2), name="3**2_setup")
Подробнее здесь: https://stackoverflow.com/questions/798 ... ernal-file
Python сельдерей выполняет задачи во внешнем файле ⇐ Python
Программы на Python
-
Anonymous
1769681399
Anonymous
Я пытаюсь настроить Python celery с ритмичным планированием задач. Только когда задачи указаны в том же файле, где я настраиваю сельдерей, он подхватывается по такту. Это мой макет каталога
├── celerybeat-schedule
├── __init__.py
└── project
├── celery.py
├── __init__.py
├── __pycache__
│ ├── celery.cpython-310.pyc
│ ├── __init__.cpython-310.pyc
│ └── tasks.cpython-310.pyc
└── tasks.py
celery.py
from celery import Celery
from celery.schedules import crontab
app = Celery(
"project",
backend="redis://localhost:6379/0",
broker="redis://localhost:6379/0",
include=["project.tasks"],
)
app.conf.update(
result_expires=3600,
)
#app.autodiscover_tasks(['project.certs'])
@app.on_after_finalize.connect
def setup_periodic_tasks(sender: Celery, **kwargs):
sender.add_periodic_task(10.0, test.s(1,2), name="1x2")
sender.add_periodic_task(10.0, project.tasks.test2.s(2,3), name="2**3")
@app.task
def test(x,y):
print(x*y)
return x*y
if __name__ == "__main__":
app.start()
tasks.py
from .celery import app
@app.task
def test2(x, y):
result = x ** y
print(result)
return result
когда я запускаю работника, он знает о задачах из другого файла
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. project.celery.test
. project.tasks.test2
однако Beat не планирует это при запуске. Есть какие-нибудь подсказки, чего мне не хватает?
Кажется, это работает
app.conf.beat_schedule = {
'1*2': {
'task': 'project.celery.test',
'schedule': 10.0,
'args': (1, 2)
},
'2**3': {
'task': 'project.tasks.test2',
'schedule': 10.0,
'args': (2, 3)
},
}
а этого нет. Добавляется только тестовый, а не другой
@app.on_after_finalize.connect
def setup_periodic_tasks(sender: Celery, **kwargs):
sender.add_periodic_task(10.0, test.s(3,7), name="3*7_setup")
sender.add_periodic_task(10.0, project.tasks.test2.s(3,2), name="3**2_setup")
Подробнее здесь: [url]https://stackoverflow.com/questions/79878519/python-celery-beat-tasks-in-external-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия