python - 尽管我有异步代码,为什么我会立即得到这个 ajax 调用的结果?
问题描述
我正在学习使用 Python 进行异步编程,但我不明白为什么当我调用与此调用对应的路由时会立即得到答案(我将其称为 ajax 调用,平台是 Django,此文件是Django 应用程序中的views.py文件)?
(当我点击按钮 ajax 调用购买方法时,它会模拟用沙箱购买一些股票并返回结果,我希望它等待 5 秒然后返回结果,而不是我几乎立即得到 ajax 调用的结果)
async def buy(request):
figi = request.GET.get('figi', 'missing')
data = {
'result': 'success',
'figi': figi
}
SANDBOX_TOKEN = 'some_token'
async def buy_stock():
try:
async with TinkoffInvestmentsRESTClient(
token=SANDBOX_TOKEN) as rest:
order = await rest.orders.create_market_order(
figi="BBG000BTR593",
lots=1,
operation=OperationType.BUY,
)
await asyncio.sleep(5)
result = await rest.orders.create_limit_order(
figi="BBG000BTR593",
lots=1,
operation=OperationType.SELL,
price=50.3,
)
return 'result'
except TinkoffInvestmentsError as e:
print(e)
result = await buy_stock()
return JsonResponse({
'result': 'success',
'message': result
}, safe=False)
换句话说,似乎调用不会等待异步方法完成并立即发送 JsonResponse
解决方案
推荐阅读
- javascript - 无法让我的简单反应计时器工作而不会导致无限循环
- android-studio - Android Studio:项目结构层次结构中的子模块
- r - 密度图 ggplot 错误返回缺失的美学错误
- python - Python Selenium:有时无法在 iframe 中获取内容
- cytoscape - 如何实现新的节点形状
- google-play - Expo 托管项目密钥库文件和 Google Play 上传密钥库之间的区别
- c++11 - 使用 pybind11 动态加载 libpython
- java - 使用打包的 JRE 编译为 linux 可执行文件
- ajax - 当您期望空结果时,如何防止从 java 服务器端返回 400 代码?
- javascript - 在 javascript 中构建表格并在 1 个单元格中进行粗体测试