首页 > 解决方案 > Discord.py 立即调用任务

问题描述

我正在尝试将 API (Django/DRF) 添加到我的 discord.py 机器人。目前我最好的解决方案是从端点添加一个任务,然后返回 202。然后任务执行......最终。

Django Rest 框架 viewset.py`:

async def connect_client(self, request, client):
    print('Connecting client...')
    from discordbot import music_player
    await music_player.connect()

@action(methods=['get'], detail=False)
def connect(self, request, pk=None):
    from discordbot import client
    client.loop.create_task(self.connect_client(request, client))
    return Response(status=202)

这行得通,它确实完成了任务应该做的事情。但它何时执行似乎完全取决于事件循环轮询的速度。

该任务似乎是立即创建的,但运行需要 1 到 10 秒(似乎是随机的)。

我可以更改事件循环轮询的速度(每 500 毫秒或 1000 毫秒),还是让它创建一个任务并立即调用它?

标签: pythondjangodjango-rest-frameworkdiscord.py

解决方案


推荐阅读