Python Celery 根本不执行周期性任务

问题描述

从 2 天起我就已经尝试让 celery 执行周期性任务,但我一点运气都没有。可以请有人帮助我。手动触发任务按预期工作。但是,如果我像配置一样等待 60 秒,那么控制台上什么也不会发生。我已经阅读了整个文档,也完全从头开始编写了我的配置,没有运气,任务不会自己执行:(

我是否必须明确定义

我正在与:

  • Celery 5.1.0(也尝试过旧版本,结果相同)
  • Django 3.2.4
  • Redis 作为代理(最新)

init.py:

from __future__ import absolute_import,unicode_literals

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

__all__ = ('celery_app',)
default_app_config = 'MyApp.apps.AccountsConfig'

芹菜.py

from celery import Celery
import environ
from django.conf import settings
import celery

env = environ.Env()

os.environ.setdefault("DJANGO_SETTINGS_MODULE","MyApp.settings")

app = Celery(settings.SITE_NAME)
app.config_from_object('django.conf:settings')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))

settings.py

broKER_URL = 'redis://' + ':' + env.str('REdis_PWD') + '@' + env.str('REdis_HOST') + ":" + env.str('REdis_PORT')
broKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_TASK_RESULT_EXPIRES = 7200
CELERY_REdis_HOST = env.str('REdis_HOST')
REdis_PWD = env.str('REdis_PWD')
CELERY_REdis_PORT = env.str('REdis_PORT')
CELERY_REdis_DB = env.str('REdis_CELERY_DB')
CELERY_CACHE_BACKEND = 'default'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'
CELERYD_TASK_SOFT_TIME_LIMIT = 3600
DJANGO_REdis_LOG_IGnorED_EXCEPTIONS = True

tasks.py:

@app.on_after_finalize.connect
def app_ready(**kwargs):
    """
    Called once after app has been finalized.
    """
    sender = kwargs.get('sender')

    sender.add_periodic_task(60,self_check_beat.s('Celery Beat self check'))# 1 min.

@app.task(name="Celery Beat self check",ignore_result=False)
def self_check_beat(arg):
return "Celery Self-Check Task says <<HELLO>>"

知道为什么 celery 不会每 5 分钟触发一次任务吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...