【问题标题】:Serving Discord bot and web requests simultaneously同时服务 Discord bot 和 Web 请求
【发布时间】:2019-08-27 03:21:34
【问题描述】:

我目前正在构建一个 Flask 应用程序,我在其中使用 python discord API 来监听命令并返回简单的消息。

    bot = commands.Bot(command_prefix="!", description="Bot")

    @bot.command()
    async def ping(ctx):
        await ctx.send('%s PONG' % ctx.message.author.mention)

    bot.run(BOT_TOKEN)

同时,我在“/”处提供网页,但是当我尝试进入该网页时,该网页只是挂起。我使用 gunicorn 使用命令“gunicorn -b 0.0.0.0:8080 --chdir application/site/main:app --reload --log-level=DEBUG”启动我的烧瓶应用程序,并在输出中得到

    [2019-08-26 23:17:04 -0400] [50370] [INFO] Starting gunicorn 19.9.0
    [2019-08-26 23:17:05 -0400] [50370] [DEBUG] Arbiter booted
    [2019-08-26 23:17:05 -0400] [50370] [INFO] Listening at: http://0.0.0.0:8080 (50370)
    [2019-08-26 23:17:05 -0400] [50370] [INFO] Using worker: sync
    [2019-08-26 23:17:05 -0400] [50373] [INFO] Booting worker with pid: 50373
    [2019-08-26 23:17:05 -0400] [50370] [DEBUG] 1 workers
    [2019-08-26 23:17:08 -0400] [50373] [INFO] Logged in as Discord Bot 603846646383509504
    [2019-08-26 23:17:35 -0400] [50370] [CRITICAL] WORKER TIMEOUT (pid:50373)
    [2019-08-26 23:17:35 -0400] [50373] [INFO] Worker exiting (pid: 50373)
    [2019-08-26 23:17:35 -0400] [50374] [INFO] Booting worker with pid: 50374
    [2019-08-26 23:17:37 -0400] [50374] [INFO] Logged in as Discord Bot 603846646383509504

discord bot 工作正常,但加载网页却不行。我是否遗漏了我的烧瓶应用程序同时服务两个请求的东西,还是这是预期的行为?

【问题讨论】:

标签: python flask gunicorn discord.py


【解决方案1】:

是的,您遇到的问题是因为 Flask 应用程序和 Discord 机器人都是同步的,Python 默认一次只能处理一个同步进程。

幸运的是,您可以使用 Python 中的 threading 库将 Flask 应用程序放入线程中,并让 Discord 机器人函数运行以处理事件。

有关如何执行此操作的示例,请参阅此 Github gist:https://gist.github.com/crrapi/c8465f9ce8b579a8ca3e78845309b832

【讨论】:

  • 这个没找到,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
相关资源
最近更新 更多