【问题标题】:Any other code doesn't run after I combined discord.py with my main script在我将 discord.py 与我的主脚本结合后,任何其他代码都不会运行
【发布时间】:2021-06-16 20:25:01
【问题描述】:

我制作了一个包含网络抓取和 api 请求的脚本,但我想添加 discord.py 以将结果发送到我的不和谐服务器,但在此之后它停止了:

client.run('token')

有没有办法解决这个问题?

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    您需要使用线程

    Python 线程允许您同时运行程序的不同部分,并可以简化您的设计。

    什么是线程?

    线程是一个独立的执行流程。这意味着您的程序将同时发生两件事。

    同时运行多个任务需要非标准的 Python 实现,用不同的语言编写一些代码,或者使用 multiprocessing,这会带来一些额外的开销。

    启动线程

    Python标准库提供threading

    import threading
    x = threading.Thread(target=thread_function, args=(1,))
    x.start()
    

    结束

    您需要为每个循环创建两个线程。在一个线程中创建和运行 discord 客户端,使用另一个线程进行网页抓取和 API 请求。

    【讨论】:

      【解决方案2】:

      client.run 似乎是一个阻塞操作。 例如。你的代码不应该在client.run之后执行

      您可以尝试使用loop.create_task()(如here 所述)来创建另一个将在后台运行并将一些消息提供给您的客户端的协程。

      【讨论】:

        【解决方案3】:

        run 方法是完全阻塞的,所以我可以看到有两种方法可以解决这个问题:

        1. 在单独的线程中创建和运行客户端,并使用某种队列在客户端和其余部分之间进行通信
        2. 使用 start 方法,该方法返回一个异步协程,您可以将其包装到一个任务中,并与您的抓取和 API 请求进行多路复用,假设它也使用异步协程

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-31
          • 2022-08-02
          • 2015-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多