async def asyncSendData(msg: str, length=1024*10): global _state, _recon, writer, reader if not _state: try: reader, writer = await asyncio.open_connection() _state = True logger.info("Connect the Server Success!") except Exception as eMsg: logger.error("Connect the Server Failed. See {}!".format(eMsg)) async def sendData(msg: str, length): pass await sendData(msg, length) 我该怎么正确的在其他的脚本调用这个asyncSendData函数而不被报错 got Future <Future pending> attached to a different loop.
时间: 2023-12-10 08:06:18 浏览: 158
这个错误通常是由于在不同的事件循环(loop)中调用异步函数而导致的。你可以尝试在调用 `asyncSendData` 函数的脚本中,先创建一个新的事件循环(loop),然后将其设置为当前事件循环(loop),再调用 `asyncSendData` 函数。
具体实现如下:
```
import asyncio
async def call_asyncSendData(msg: str, length=1024*10):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
await asyncSendData(msg, length)
loop.close()
```
然后在其他脚本中,调用 `call_asyncSendData` 函数即可,这样就不会出现上述错误了。
相关问题
async def asyncSendData(msg: str, length=1024*10): global _state, _recon, writer, reader if not _state: try: reader, writer = await asyncio.open_connection() _state = True logger.info("Connect the Server Success!") except Exception as eMsg: logger.error("Connect the Server Failed. See {}!".format(eMsg)) async def sendData(msg: str, length): pass await sendData(msg, length) 我该怎么正确的在其他的脚本调用这个asyncSendData函数
你可以在其他脚本中使用以下代码来调用 asyncSendData 函数:
```
import asyncio
async def send_data(msg: str, length=1024*10):
global _state, _recon, writer, reader
if not _state:
try:
reader, writer = await asyncio.open_connection()
_state = True
logger.info("Connect the Server Success!")
except Exception as eMsg:
logger.error("Connect the Server Failed. See {}!".format(eMsg))
async def send_data(msg: str, length):
pass
await send_data(msg, length)
# 调用 asyncSendData 函数
asyncio.run(send_data("Hello World!"))
```
需要注意的是,如果你想在其他脚本中调用这个函数,那么你需要先将这个函数所在的脚本导入到你的代码中。另外,你需要在调用这个函数之前,先运行一个 asyncio 的事件循环,例如使用 asyncio.run 函数来运行。
阅读全文