如何在 Django 中使用带有异步功能的事务?

问题描述 投票:0回答:1

我正在尝试使用异步函数从 PostgreSQL 数据库检索订单列表,但遇到运行时错误,并显示消息“您无法将 ATOMIC_REQUESTS 与异步视图一起使用。”我尝试调试代码,发现 Orders 中的 get 函数根本没有被调用。我还查看了 Django 文档,但找不到任何相关信息。有人可以帮我解决这个问题吗?

这是代码

class Utils:
    @sync_to_async
    def get_orders(self):
        orders = Order.objects.all()
        return [orders]

    @sync_to_async
    def get_sellers(self):
        sellers = Seller.objects.all()
        return [sellers]

class Orders(View, Utils):

    async def get(self, request):
        orders = asyncio.ensure_future(self.get_orders())

        await asyncio.wait([orders])
        print(orders.result())

        return render(request, 'orders.html')

这是错误日志

Traceback (most recent call last):                                                                                        
  File "C:\Хранилище говна\pythonProject1\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner    
  File "C:\Хранилище говна\pythonProject1\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "C:\Хранилище говна\pythonProject1\venv\lib\site-packages\django\core\handlers\base.py", line 192, in _get_response
    wrapped_callback = self.make_view_atomic(callback)
  File "C:\Хранилище говна\pythonProject1\venv\lib\site-packages\django\core\handlers\base.py", line 350, in make_view_atomic
    raise RuntimeError(
RuntimeError: You cannot use ATOMIC_REQUESTS with async views.

python django asynchronous django-models django-views
1个回答
0
投票

在设置中,您可能会找到名为“ATOMIC_REQUEST”的选项(通常放置在数据库设置中)并将其设置为 False。

© www.soinside.com 2019 - 2024. All rights reserved.