如何从失败的 SQLAlchemy 提交中恢复?
How to recover from a failed SQLAlchemy commit?
我将 Flask-SQLAlchemy 与 Celery 结合使用。如果 Celery 任务需要很长时间,这两者配合起来会很糟糕,因为当提交发生时完成时,MySQL 连接将超时并且 "gone away".
是否可以更改 SQLAlchemy 对象,尝试提交,当失败时,打开一个新会话,将对象附加到新会话,然后提交它们?如果是这样,如何?什么样的 SQLAlchemy 函数可以做到这一点?或者现在由于会话消失而提交失败,SQLAlchemy 对象是否失效并且必须重新完成对它们的所有工作?
答案是merge
。 merge
可用于将对象附加到不同的会话。
我将 Flask-SQLAlchemy 与 Celery 结合使用。如果 Celery 任务需要很长时间,这两者配合起来会很糟糕,因为当提交发生时完成时,MySQL 连接将超时并且 "gone away".
是否可以更改 SQLAlchemy 对象,尝试提交,当失败时,打开一个新会话,将对象附加到新会话,然后提交它们?如果是这样,如何?什么样的 SQLAlchemy 函数可以做到这一点?或者现在由于会话消失而提交失败,SQLAlchemy 对象是否失效并且必须重新完成对它们的所有工作?
答案是merge
。 merge
可用于将对象附加到不同的会话。