Запланированная задача Django Celery не выводится

Я работаю с Django и хочу, чтобы определенная задача выполнялась два раза в день (09:00 и 17:00). Итак, я нашел сельдерей в Интернете, и он выглядит хорошо. Я следовал нескольким инструкциям и настроил его.

Я установил периодическую задачу в базе данных, и она запускается (для теста) каждую минуту. Или это не так, это только говорит так:

[2020-12-15 14:32:34,997: INFO/MainProcess] Scheduler: Sending due task ResumePentest (VulnManager.tasks.resumePentest)
[2020-12-15 14:32:34,998: DEBUG/MainProcess] VulnManager.tasks.resumePentest sent. id->277c73a8-58bc-41ea-b2ba-4aa7af0c8b94

Я не думаю, что он на самом деле работает, потому что я пробовал несколько разных вариантов «отладки»: создать файл, распечатать текст, запустить мою настоящую команду. Кажется, ни один из них не работает.

Мой файл tasks.py выглядит так (для тестирования):

from __future__ import absolute_import, unicode_literals
from celery import shared_task

@shared_task
def resumePentest():
    f = open("/home/marvin/demofile2.txt", "a")
    f.write("Now the file has more content!")
    f.close()

Я запускаю работника сельдерея с помощью этой команды:

celery -A VulnScanner beat -l DEBUG --scheduler django_celery_beat.schedulers:DatabaseScheduler

Любые подсказки? Не уверен, что я делаю неправильно? Если требуется дополнительная информация, пожалуйста, дайте мне знать.

Полный вывод celery worker:

celery beat v5.0.4 (singularity) is starting.
__    -    ... __   -        _
LocalTime -> 2020-12-15 14:44:26
Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> django_celery_beat.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%DEBUG
    . maxinterval -> 5.00 seconds (5s)
[2020-12-15 14:44:26,388: DEBUG/MainProcess] Setting default socket timeout to 30
[2020-12-15 14:44:26,389: INFO/MainProcess] beat: Starting...
[2020-12-15 14:44:26,389: DEBUG/MainProcess] DatabaseScheduler: initial read
[2020-12-15 14:44:26,389: DEBUG/MainProcess] Writing entries...
[2020-12-15 14:44:26,390: DEBUG/MainProcess] DatabaseScheduler: Fetching database schedule
[2020-12-15 14:44:26,392: DEBUG/MainProcess] Using selector: EpollSelector
[2020-12-15 14:44:26,396: DEBUG/MainProcess] Current schedule:
<ModelEntry: ResumePentest VulnManager.tasks.resumePentest(*[], **{}) <freq: 1.00 minute>>
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) <crontab: 0 4
         * *
          * (m/h/d/dM/MY), UTC>
        >
[2020-12-15 14:44:26,429: DEBUG/MainProcess] beat: Ticking with max interval->5.00 seconds
[2020-12-15 14:44:26,448: DEBUG/MainProcess] Start from server, version: 0.9, properties: {'capabilities': {'publisher_confirms': True, 'exchange_exchange_bindings': True, 'basic.nack': True, 'consumer_cancel_notify': True, 'connection.blocked': True, 'consumer_priorities': True, 'authentication_failure_close': True, 'per_consumer_qos': True, 'direct_reply_to': True}, 'cluster_name': 'rabbit@ubuntuserver', 'copyright': 'Copyright (c) 2007-2019 Pivotal Software, Inc.', 'information': 'Licensed under the MPL 1.1. Website: https://rabbitmq.com', 'platform': 'Erlang/OTP 22.2.7', 'product': 'RabbitMQ', 'version': '3.8.2'}, mechanisms: [b'PLAIN', b'AMQPLAIN'], locales: ['en_US']
[2020-12-15 14:44:26,449: INFO/MainProcess] Scheduler: Sending due task ResumePentest (VulnManager.tasks.resumePentest)
[2020-12-15 14:44:26,455: DEBUG/MainProcess] using channel_id: 1
[2020-12-15 14:44:26,457: DEBUG/MainProcess] Channel open
[2020-12-15 14:44:26,459: DEBUG/MainProcess] beat: Synchronizing schedule...
[2020-12-15 14:44:26,459: DEBUG/MainProcess] Writing entries...
[2020-12-15 14:44:26,467: DEBUG/MainProcess] VulnManager.tasks.resumePentest sent. id->d33fe09b-2e25-4f7b-aec9-03ea4a630ab9
[2020-12-15 14:44:26,469: DEBUG/MainProcess] beat: Waking up in 5.00 seconds.
[2020-12-15 14:44:31,477: DEBUG/MainProcess] beat: Waking up in 5.00 seconds.
^C[2020-12-15 14:44:33,765: DEBUG/MainProcess] Writing entries...
[2020-12-15 14:44:33,766: DEBUG/MainProcess] Writing entries...
[2020-12-15 14:44:33,766: DEBUG/MainProcess] Writing entries...
[2020-12-15 14:44:33,766: DEBUG/MainProcess] Writing entries...

Конечная цель использования этого — запустить (в 9:00) и остановить (в 17:00) сканирование безопасности с помощью greenbone/gvm-cli.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
788
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте использовать эту команду для проверки новой задачи: celery -A proj worker -l INFO.

Для получения полного списка доступных параметров командной строки используйте команду справки: celery help

Это сделало это. Мне действительно нужен был рабочий, но также и сельдерей. Спасибо за помощь.

Marvin 16.12.2020 10:54

Другие вопросы по теме