python - Discord.py 任务循环运行过于频繁且未完成
问题描述
我目前遇到了 Discord.py 的问题,我有一个任务循环,它会立即重复但实际上没有完成。您可以在下面找到我的代码片段。
import discord
from discord.ext import commands, tasks
import insider
@client.event
async def on_ready():
print("Bot is Ready.")
check_insider_activity.start()
@tasks.loop(minutes=5)
async def check_insider_activity():
print("Checking Insider Buys")
newBuys = insider.get_new_insider_buys()
print(newBuys)
每当我运行我的代码时,输出如下:
Bot is ready.
Checking Insider Buys
Checking Insider Buys
Checking Insider Buys
Checking Insider Buys
Checking Insider Buys
Checking Insider Buys
它大约每隔一两秒发送一次“检查内幕购买”,并一直这样做,直到我退出程序。函数 get_new_insider_buys() 似乎永远不会完成,而且在任务似乎刚刚重新启动之前,我从未进入 print 语句。
在某些情况下,get_new_insider_buys() 是一个返回新内幕购买列表的函数。该函数使用 BeautifulSoup 抓取网页并使用 Pandas Dataframe 操作一些数据,然后在返回列表之前将其写入本地文件。
get_new_insider_buys() 可以完美地自行运行,但是一旦我想将它放入 Discord.py 任务循环中,它似乎永远不会执行。
我觉得好像我在函数中发生了某种形式的并发或任务错误,尽管我不知道如何或为什么,而且我束手无策。我可以让其他任务正常工作,但是一旦我将这个添加到混合中,它就会中断,我的所有任务都开始像这个一样。
解决方案
我设法解决了我的问题。
f = open("filepath", "w")
它是作为我insider.get_new_insider_buys()
职能范围内的副产品发生的。我的文件路径有一个相对路径,而不是直接路径。我猜 open() 处理这些的方式不同,结果我的程序出错了。
我希望那些偶然发现这一点的人可以避免头痛。
推荐阅读
- wordpress - Wordpress Jetpack 插件 simple_payments 问题
- sql-server - 如何显示具有非活动组织的活动子组织(SQL Server 中的树)
- javascript - MongoDB 数组在 Javascript 中未定义但存在于数据库中
- r - 将 Shiny 应用程序中的用户输入(有些是列表)导出到文件并稍后加载
- postgresql - PostgreSQL 10 - 查看 Windows 10 上的当前日志
- javascript - 打字稿 - 无法访问 Array.some 中的“this”
- kubernetes - 如何在使用 kubeadm 创建的 Kubernetes 集群上备份 etcd - rpc 错误:代码 = 13
- wordpress - 如何在 WooCommerce 中从不带小数的价格中删除价格后缀 (,-)?
- pandas - 将不具有相同列的 pandas 数据帧列表合并到一个 pandas 数据帧
- xcode - Applescript Xcode,我需要读取文件并在标签上不断显示更改