【发布时间】:2021-01-01 12:20:42
【问题描述】:
我正在使用 ASGI 服务器在 django 上为 fastAPI 编写测试(改编自 tutorial)。我的 fastAPI 方面的测试不断返回错误,我试图修复它是徒劳的。
我需要创建一个用户来测试 API。
@sync_to_async
def _create_user(self, username, email):
try:
return User.objects.create(username=username, email=email)
except:
return None
async def setUp(self):
task = asyncio.create_task(self._create_user(username="user", email="email@email.com"))
self.user = await task
运行这个测试,发现self.user 是一个协程,无法访问我期望的属性。
如何解决?
更新:
删除了 _create_user(self, username, email) 的异步。
【问题讨论】:
-
为什么要用
sync_to_async包装async函数?为什么_create_userasync首先是看到它除了错误地尝试await print(..)之外什么都不做异步?最后,为什么是setUpasync?这似乎根本不需要任何异步。您本质上是将同步操作User.objects.create包装到async的几个空层中,只是为了(错误地)解开空层然后运行同步代码。 -
感谢您的帮助。有些事情我没有掌握很多。用 sync_to_async 包装 asyn 是出于调试目的,在发布我的问题之前我没有将其删除。我会更新我的问题。
标签: python django async-await fastapi