程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python中同时请求的问题,Aiohttp大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python中同时请求的问题,Aiohttp

开发过程中遇到Python中同时请求的问题,Aiohttp的问题如何解决?下面主要结合日常开发的经验,给出你关于Python中同时请求的问题,Aiohttp的解决方法建议,希望对你解决Python中同时请求的问题,Aiohttp有所启发或帮助;

我正在创建某种支付聚合器。所以,我有一个功能,如果订单没有被用户处理,它会过期:

async def update_order_status(conn,order_ID,status):
    query = sa.update(orders).values(
        status_ID=sa.SELEct([orders__statuses.c.ID]).where(
            orders__statuses.c.status == status
        )
    ).where(orders.c.ID == order_ID)
    await conn.execute(query)

还有处理订单的函数(它太大了,所以这里是有问题的部分):

update_query = sa.update(orders).values(
            status_ID=sa.SELEct([orders__statuses.c.ID]).where(
                orders__statuses.c.status == status
            )
        ).where(orders.c.ID == self.order_data.get('ID'))
        insert_status_log_query = orders__statuses_logs.insert().values(
            order_ID=self.order_data.get('ID'),status_from=sa.SELEct([orders.c.status_ID]).where(orders.c.external_ID == self.order_external_ID),status_to=sa.SELEct([orders__statuses.c.ID]).where(orders__statuses.c.status == status)
        )
        await self.conn.execute(insert_status_log_query)
        await self.conn.execute(update_query)

但是如果我们不延迟地发送两个请求来处理和过期订单,它的状态就会从 Pending 变成 Expired,然后从 Expired 变成successful。但是,如果这些请求一个接一个地出现,则一切正常。有没有办法让这些函数一个接一个地依次执行? 附注我曾尝试使用 asyncio.lock(),但没有结果。

p.p.S 因为这些请求是同时来的,所以没有办法获取 status_fromstatus_to,以防止函数从 Expired 状态改变。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的Python中同时请求的问题,Aiohttp全部内容,希望文章能够帮你解决Python中同时请求的问题,Aiohttp所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。