我正在发现芹菜,但在做我真正想要的事情时遇到了一些问题。在flask docs之后设置芹菜实例非常简单。但是celery docs之后却没有。我使用redis作为我的键值DB。但我的任务似乎没有正确安排。
from flask import Flask
from flask_celery import make_celery
from celery.schedules import crontab
app = Flask(__name__)
app.config['celery_broker_url'] = 'redis://localhost:6379'
app.config['celery_result_backend'] = 'redis://localhost:6379'
celery = make_celery(app)
@celery.task(name='flask_celery.test')
def test(arg):
return(arg)
@celery.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')
celery.conf.beat_schedule = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': 30.0,
'args': (16, 16)
},
}
if __name__ == '__main__':
app.run(debug=True)
但是,使用另一个简单示例可以正常工作:
@app.route('/<mystring>')
def process(mystring):
mystring1.delay(mystring)
return 'task sent'
@celery.task(name='flask_celery.mystring')
def mystring1(string):
return string
那我的crontab芹菜示例有什么问题?最终我正在寻找一种从前端设置任务的方法,即在将来的某个时间安排任务。