首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Asyncio.create_subprocess_exec NotImplementedError - Fastapi后台任务

Asyncio.create_subprocess_exec NotImplementedError - Fastapi后台任务
EN

Stack Overflow用户
提问于 2020-02-05 16:25:26
回答 1查看 648关注 0票数 0

我试图在Fastapi后台任务中调用asyncio.create_subprocess_exec,但它一直引发NotImplementedError。当run_subprocess函数在Fastapi之外运行时,它工作得很好。我在windows中使用的是一个asyncio循环,而不是uvloop。

代码语言:javascript
运行
复制
import asyncio
from fastapi import FastAPI, BackgroundTasks

DHCP_SERVER = "1.1.1.1"

app = FastAPI()

@app.get("/")
async def subprocess_test(background_tasks: BackgroundTasks):
  background_tasks.add_task(run_subprocess)

async def run_subprocess():
  proc = await asyncio.create_subprocess_exec(
    'powershell.exe',
    f'Get-Dhcp-Serverv4Scope -ComputerName \"{DHCP_SERVER}\"',
    stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
  )

  stdout, stderr = await proc.communicate()

  if stderr:
    print(stderr)
  else:
    print(stdout)


File ".\subprocess_example.py", line 13 in run_subprocess
  proc = await asyncio.create_subprocess_exec(
File "C:\Python\Python38-32\lib\asyncio\subprocess.py", line 236, in create_subprcess_exec
  transport, protocol = await loop.subprocess_exec(
File "C:\Python\Python38-32\lib\asyncio\base_events.py", line 1615, in subprocess_exec
  transport = await self._make_subprocess_transport(
File "C:\Python\Python38-32\lib\asyncio\base_events.py", line 487, in _make_subprocess_transport
  raise NotImplementedError

有没有人能帮我解决这个问题?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-06 03:24:50

我相信这个错误是被触发的,因为fastapi使用uvloop,而asyncio在没有设置策略的情况下不知道这一点,有一个答案提供了一些如何实现这一点的钩子;

asyncio event loop equivalent with uvloop

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60071692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档