python脚本无法在heroku上托管的其他python脚本中调用fn

Posted

技术标签:

【中文标题】python脚本无法在heroku上托管的其他python脚本中调用fn【英文标题】:python script unable to call fn in other python scripts hosted on heroku 【发布时间】:2021-08-05 14:08:39 【问题描述】:

我使用 Python 制作了一个 Discord Bot,并使用内置的 Git 命令将其托管在 Heroku 上。它运行主脚本,即 DiscordBot.py,该脚本从 topGainer.py 调用另一个 fn topGainer

当我在我的系统上本地运行 DiscordBot.py 时,机器人功能完美,但在 Heroku 上它无法调用 topGainer .py 函数 topGainer 返回一个使用 Tabulate 制作的列表

这是不和谐机器人的代码

if message.author == client.user:
    return

if message.content.startswith('$gainer'):
    tg=topGainer()
    await message.channel.send(tg)
    
if message.content.startswith('$loser'):
    tl=topLoser()
    await message.channel.send(tl)
    
if message.content.startswith('$get'):
    scrip = msg.split("$get ",1)[1]
    info=basic(scrip)
    await message.channel.send(info)
    
if message.content.startswith('$AnotherFunction'):
    await message.channel.send('Coming Soon :')

我在 Heroku Procfile 中也有 worker: python DiscordBot.py

在 heroku 上,此代码确实登录了 discord 机器人,并且函数 $AnotherFunction 有效。

【问题讨论】:

您的意思是“无法从其他 python 文件调用函数”吗? 【参考方案1】:

Heroku 在托管不和谐机器人方面出了名的糟糕,原因有很多。我建议使用不同的主机(AWS 提供一年免费托管),因为制作 discord.py(Danny) 的主要人员之一已表示不要使用它。

此外,机器人也不是该平台的设计目标。 Heroku 旨在提供 Web 服务器(如 Django、Flask 等)。这就是为什么他们给你一个域名并在他们的本地模拟器上打开一个端口。 (引用自 discord.py discord 服务器)

如果 Heroku 在本地运行完美,它可能是导致错误的原因。

【讨论】:

谢谢,Harry 会给 aws 一个机会。我一直想知道代码有什么问题 当然,如果您需要有关如何设置它的教程的链接。 AWS support

以上是关于python脚本无法在heroku上托管的其他python脚本中调用fn的主要内容,如果未能解决你的问题,请参考以下文章

头盔导致 Heroku 上托管的 MERN 应用程序导致错误:拒绝执行内联脚本,因为它违反了以下内容

如何在 Heroku.com 上托管的 Redmine 上安装插件

如何将数据从 Heroku 上托管的 Node.js 应用程序发送到托管在完全独立(Cpanel)服务器上的 PHP 文件?

如何解决 Heroku 上托管的 django 项目中的迁移问题?

如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?

我需要为 Heroku 上托管的机器人实现分片吗?