在新线程中启动异步函数

2023-11-29

我正在尝试创建一个不和谐机器人,我需要在另一个新线程中运行异步函数,因为主线程需要运行另一个函数(不和谐客户端)

我正在努力实现的目标:

# This methods needs to run in another thread
async def discord_async_method():
    while True:
        sleep(10)
        print("Hello World")
        ... # Discord Async Logic

# This needs to run in the main thread
client.run(TOKEN)

thread = ""

try:
    # This does not work, throws error "printHelloWorld Needs to be awaited"
    thread = Thread(target=discord_async_method)
    thread.start()
except (KeyboardInterrupt, SystemExit):

    # Stop Thread when CTRL + C is pressed or when program is exited
    thread.join()

我尝试过使用 asyncio 的其他解决方案,但无法让其他解决方案发挥作用。

跟进:当您创建一个线程时,当您停止程序(即键盘中断或系统退出)时,如何停止该线程?

任何帮助将不胜感激,谢谢!


您不需要涉及线程来在 asyncio 中并行运行两件事。只需在启动客户端之前将协程作为任务提交到事件循环即可。

请注意,您的协程不得运行阻塞调用,因此不要调用sleep()你需要等待asyncio.sleep()。 (这通常是协程的情况,而不仅仅是不和谐的协程。)

async def discord_async_method():
    while True:
        await asyncio.sleep(10)
        print("Hello World")
        ... # Discord Async Logic

# run discord_async_method() in the "background"
asyncio.get_event_loop().create_task(discord_async_method())

client.run(TOKEN)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在新线程中启动异步函数 的相关文章

  • 在Spring中使用什么样的“EventBus”?内置、Reactor、Akka?

    我们将在几周后启动一个新的 Spring 4 应用程序 我们希望使用一些事件驱动的架构 今年 我到处读到有关 Reactor 的内容 在网上查找时 我偶然发现了 Akka 所以现在我们有3个选择 春天的ApplicationEvent ht
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 如何将交互式 matplotlib 图形插入 tkinter 画布

    我正在尝试将交互式 matplotlib 图形 具有滑块 重置按钮和单选按钮的图形 放入 tkinter Canvas 中 我已成功添加非交互式图表 但当它变为交互式时找不到问题 我尝试将所有内容更改为使用 matplotlib Figur
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 我们可以使用 x86_64 CPU 原子在 PCI Express 上生成复合原子操作吗?

    如您所知 从2 0版本开始 PCI Express支持复合原子操作 FetchAdd Swap CAS https pcisig com sites default files specification documents ECN Ato
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • PHP:如何填充数组中的目录结构

    我正在开发一个管理面板 显示服务器上特定位置的目录结构 我有一个递归 php 函数 可以迭代每个文件和文件夹 我不明白的是如何将此目录结构存储在 php 关联数组中 如下所示 array foldername1 0 file if the
  • 为什么这一点很明确:两者都在全球范围内行动?

    Issue 据我所知 清除浮动主要适用于父项 但是我的模板在帖子缩略图之后存在一个问题 其中clear both作用于整个内容包装器 如果不清除浮动 细线将粘在缩略图右侧的文本上 我想要做的是将线置于缩略图或文本下方 45px 处 取决于较
  • GLSL 自旋锁永不终止

    我正在尝试实现一个 GLSL 自旋锁 以便能够实现单通道深度剥离 我遇到了麻烦 因为锁定纹理使用的示例很少 我必须承认 我真的不知道自己在做什么 所以为了安全起见 我描述的上下文可能比必要的更多 我编写了一个片段程序 它实际上什么也不做 v
  • 获取地图区域的位置(html)?

    这可能吗 我正在尝试查找元素的 x 和 y 坐标与浏览器相关 var position this position x position left y position right 不起作用 有什么办法可以做到这一点吗 http adams
  • 0和1数量相同的二进制数

    当我解决的时候欧拉项目问题 15我意识到它可以通过从开始到结束的路线的组合方式来解决 生成的路由始终具有相同大小的右或下选择 或 0 和 1 并且右路由始终具有相同数量的 0 和 1 因此 二进制字中具有相同数量 0 和 1 的数字的数量为
  • 如何将域名指向 heroku 应用程序

    虽然我已经在 VPS 上完成了此操作 但我从未为 heroku 应用程序做过此操作 现在我必须为一家相当大的公司执行此操作 所以我真的想要一个简单的要点列表来说明如何执行此操作 我读了这些说明 我还是有点不清楚它们到底是什么意思 再说一遍
  • 正则表达式匹配第二次出现字符后的相邻数字

    陷入以下问题 我有一个字符串 ABC 123 456XX 我想使用正则表达式提取第二个句点之后的 3 个数字字符 真的很挣扎 并且会感激任何新的见解 这是我得到的最接近的 但它并不是很接近我想要的 d 3 感谢您提前提供的任何帮助 谢谢 如
  • 如何在 JUnit4 中按特定顺序运行测试方法?

    我想执行由以下注释的测试方法 Test按特定顺序 例如 public class MyTest Test public void test1 Test public void test2 我想确保运行test1 before test2 每
  • 获取当前正在运行的应用程序的列表,而不是进程c#

    我知道您可以使用以下命令获取当前正在运行的进程的列表Process processes Process GetProcesses or Process processes Process GetProcessesByName process
  • 从邮递员到 Microsoft Dynamics crm 365 的 POST/GET 请求

    我试图使用 Web API 创建实体 因此 使用我的实例 url client id client secret 我可以成功生成访问令牌和刷新令牌 但每当我尝试使用该 access token 发出任何发布请求时 我都会收到 401 未经授
  • 在图像顶部绘制矩形的浏览器友好方式 R Shiny

    我编写了一个闪亮的应用程序 允许用户在图像顶部绘制矩形 下面是最小的可重现示例 我目前的方法的问题是每次添加矩形时 都会创建一个新图像 将其写入磁盘并进行渲染 发送到用户的浏览器 这需要相当长的时间 当互联网连接速度很慢时 这会变得非常烦人
  • 统一码格式

    我正在处理字符串格式 对于英语 格式很整洁 但对于 unicode 字符 格式很随意 谁能告诉我原因吗 例子 form u lt 15 lt 3 a u u u u u u u u u u for i in range 0 10 print
  • 结束迭代器递减的可移植性如何?

    刚刚遇到减量end 我公司源代码中的迭代器对我来说看起来很奇怪 据我记得这在某些平台上有效 但在其他平台上无效 也许我错了 但是我在标准中找不到任何有用的东西 标准只是说end 返回一个迭代器 它是结束后的值 但它保证是可递减的吗 这样的代
  • 雄辩的 javascript 递归示例中的混乱

    这段递归代码来自 eloquent javascript 一书 function power base exponent if exponent 0 return 1 else return base power base exponent
  • 如何访问Java中自定义注释中定义的字段

    我有以下 Java 代码 import java lang reflect Field public class AnnotationTest public interface Size int size int location Size
  • 无法连接到 Openfire 服务器(使用 smack api)

    我正在尝试使用 smack 4 1 0 运行此代码 Thread D new Thread new Runnable Override public void run SmackConfiguration setDefaultPacketR
  • CMake add_custom_target():使用“调试->开始调试”运行自定义命令

    add custom target NSISTest Preprocess SOURCES precompress nsi add custom command TARGET NSISTest Preprocess POST BUILD C
  • 在 Python 中记录为调用者模块

    我有以下应用程序结构 utils py def do something logger None if not logger logger logging getLogger name print hello logger debug te
  • 关于 Firemonkey (Delphi) 中的 TidHttp、mshtml、ActiveX、COMObj

    我正在审查以下有趣的文章 使用 Delphi 从 HTML 页面中提取链接 我在 Firemonkey 中进行了测试 它非常有用 但是此代码使用来自 Mshtml ActiveX 和 COMObj 的对象 所以我的问题是 上面的这些对象是否
  • 在新线程中启动异步函数

    我正在尝试创建一个不和谐机器人 我需要在另一个新线程中运行异步函数 因为主线程需要运行另一个函数 不和谐客户端 我正在努力实现的目标 This methods needs to run in another thread async def