Python 使用Flask和SQLAlchemy在芹菜任务中未更新数据库

Python 使用Flask和SQLAlchemy在芹菜任务中未更新数据库,python,flask,sqlalchemy,celery,Python,Flask,Sqlalchemy,Celery,我正在用Flask和SQLAlchemy编写web应用程序。我的程序需要在后台处理一些东西,然后在数据库中将这些东西标记为已处理。使用,我有如下内容: 从烧瓶导入烧瓶 从芹菜进口芹菜 def make_芹菜(应用程序): 芹菜=芹菜(app.import\u name,broker=app.config['celery\u broker\u URL']) celery.conf.update(app.config) TaskBase=芹菜。任务 类ContextTask(TaskBase): 抽

我正在用Flask和SQLAlchemy编写web应用程序。我的程序需要在后台处理一些东西,然后在数据库中将这些东西标记为已处理。使用,我有如下内容:

从烧瓶导入烧瓶
从芹菜进口芹菜
def make_芹菜(应用程序):
芹菜=芹菜(app.import\u name,broker=app.config['celery\u broker\u URL'])
celery.conf.update(app.config)
TaskBase=芹菜。任务
类ContextTask(TaskBase):
抽象=真
定义调用(self,*args,**kwargs):
使用app.app_context():
返回TaskBase.\uuuu调用(self,*args,**kwargs)
芹菜.Task=ContextTask
回归芹菜
app=烧瓶(名称)
芹菜=制作芹菜(应用程序)
类内容(db.Model):
id=db.Column(db.Integer,主键=True)
processed=db.Column(db.Boolean)
@芹菜
def过程_材料(材料):
#在这里处理东西
stuff.processed=True
db.session.commit()
@应用程序路径(“/process\u stuff/”)
def do_过程_材料(id):
stuff=stuff.query.get\u或\u404(id)
进程_stuff.延迟(stuff)
返回重定向(url\u for(“now\u wait”))

我可以从
process\u stuff
访问我的数据库(例如提交
stuff.query.get(某些id)
工作),但
db.session.commit()
什么都不做:我的
stuff
记录未更新。根据芹菜工人日志,提交发生,但数据库中没有任何更改。我的
db.session.commit()是否有问题?有可能做出这样的承诺吗?

好的,我知道了<代码>填充
传递到
进程_stuff()
未附加到
db.session
。我必须在
process\u stuff()
中发出明确的请求,以获得正确的
stuff
对象,如下所示:

@cellery.task()
def过程_材料(材料):
#在这里处理东西
my_stuff=stuff.query.get(stuff.id)
我的东西已处理=真的
db.session.commit()
现在它起作用了