调用当前事件循环的`create_task`方法,将一个异步函数作为任务添加到事件循环中,以便在事件循环运行时执行。
示例
import asyncio
class MessageListener:
async def _listen_message(self):
while True:
# 模拟消息监听
message = await self._get_message()
print(f"Received message: {message}")
async def _get_message(self):
# 模拟从某个源获取消息
await asyncio.sleep(1) # 模拟网络延迟
return "Hello, World!"
async def main():
listener = MessageListener()
loop = asyncio.get_event_loop()
loop.create_task(listener._listen_message())
loop.run_forever()
asyncio.run(main())
1. **创建消息监听器对象**:(或其它对象,含一个异步方法)
```python
listener = MessageListener()
```
这行代码创建了一个名为`listener`的对象,该对象应该是`MessageListener`类的实例。`MessageListener`类应该定义了如何监听和处理消息的逻辑。
2. **获取事件循环**:
```python
loop = asyncio.get_event_loop()
```
这行代码获取当前线程的事件循环。`asyncio`库使用事件循环来调度异步任务和回调。
3. **创建异步任务**:
```python
loop.create_task(listener._listen_message())
```
这行代码创建了一个异步任务,该任务会调用`listener`对象的`_listen_message`方法。`_listen_message`方法应该是异步的(使用`async def`定义),并且负责监听消息。`create_task`方法会将这个异步任务添加到事件循环中,使其能够异步执行。
4. **运行事件循环**:
```python
loop.run_forever()
```
这行代码启动事件循环,使其开始运行。`run_forever`方法会一直运行事件循环,直到调用`loop.stop()`方法停止它。在事件循环运行期间,它会调度并执行所有已添加的异步任务。
上述3和4合并:
```python
asyncio.get_event_loop().create_task(listener._listen_message())
```