celerybeat 如何通过调度程序将参数传递给函数?

Ale*_*exW 4 python celery celerybeat

我无法通过 celerybeat 计划将参数传递给我的函数。搜索后看起来好像我应该能够使用 args 命令传递它们,但我收到如下错误。任何人都可以指出我正确的方向吗?

CELERYBEAT_SCHEDULE = {
    'maintenance_mail_1_day': {
        'task': 'home.tasks.maintenance_mail',
        'schedule': crontab(hour='15'),
        'args' : (1),
    },
    'maintenance_mail_3_day': {
        'task': 'home.tasks.maintenance_mail',
        'schedule': crontab(hour='15'),
        'args' : (3),
    },    
    'maintenance_mail_5_day': {
        'task': 'home.tasks.maintenance_mail',
        'schedule': crontab(hour='15'),
        'args' : (5),
    },
    'maintenance_mail_7_day': {
        'task': 'home.tasks.maintenance_mail',
        'schedule': crontab(hour='15'),
        'args' : (7),
    }
Run Code Online (Sandbox Code Playgroud)

任务,py

@app.task
def maintenance_mail(days):
    return send_maintnance_emails(days)
Run Code Online (Sandbox Code Playgroud)

sch*_*ggl 5

以下内容在 Python 中成立: (1) == 1

为了使其成为单例tuple,请添加一个额外的逗号:(1,)并在您的设置中相应地:

# ...
'args' : (1,),
# ...
Run Code Online (Sandbox Code Playgroud)