我有一个功能,我用烧瓶中的芹菜创建了一个任务,该任务每天运行一次。我为相同的功能创建了另外3个任务-这些任务有时在某些时间,每天固定时间运行。我尝试运行所有这些任务,但只运行了我创建的第一个任务(每分钟运行一次)的一天)。 这是我的代码片段: 功能:
@celery.task(name='scheduler',once={'graceful': True})
def scheduler(self):
#rest of the code
芹菜配置:
from celery import Celery
from celery.schedules import crontab
from celery.utils.log import get_task_logger
app = Flask(__name__)
logger = get_task_logger(__name__)
def make_celery(app):
#Celery configuration
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
app.config['CELERYBEAT_SCHEDULE'] = {
# Executes every minute
'periodic_task-every-minute': {
'task': 'scheduler',
'schedule': crontab(minute="*"),
'args': (1,2)
},
'periodic_task-every-friday':{
'task': 'scheduler',
'schedule': crontab(day_of_week='friday',hour=0,minute=10),
'args': (3,4)
},
'periodic_task-every-monday':{
'task':'scheduled_scheduling',
'schedule': crontab(day_of_week='monday',hour=20,minute=20),
'args': (5,6)
},
'periodic_task-daily':{
'task': 'scheduler',
'schedule': crontab(hour=20,minute=20),
'args':(7,8)
}
}
celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
celery = make_celery(app)
正在运行的任务只是“定期任务每分钟”,而其余的则不会运行。