我们正在尝试执行一个异步函数来执行填充数据库中表的 sql 代码。这是过程的模式:
...
import async
...
async SqlProcess(code, params):
...
asyncio.ensure_future(executeSqlCode(Code, params))
return 'Code executed'
async executeSqlCode(code, params):
...
cursor.execute(code, params)
cnxn.commit()
...
使用 pycharm 这个过程运行良好。表中填充了适当的结果。但是,在 Web 应用程序执行期间监视表时,有一些我们无法理解的东西:
select count(*) from table (nolock) where condition
我们可以看到新数据正在存储,但是当过程结束时,表返回到没有新寄存器的原始计数。就像表中的回滚一样。
会发生什么?为什么这适用于 Pycharm 但不适用于 Web 应用程序。我们是这种异步方法的新手,肯定还缺少一些东西;我们检查了不同的站点以了解此结果,但到目前为止我们还没有找到原因。