Comments (15)
1.代理功能已经更新,请看最新的更新日志
2.关于异步,nonebot2原生支持异步,这个插件也只是获取一次单个网页,个人理解是没必要使用httpx的异步,如果我的理解有问题,麻烦指正
3.关于2小时定时推送,这个插件个人初衷是给私人小群用,后面想如果其他人有需求也可以用所以才发布,调整定时任务需要有一定的改动量,个人暂时没有精力调整,如果您有兴趣,可以提交pr
最后,感谢您的使用和提出宝贵意见
from splatoon2-bot.
如果插件帮到了您,麻烦您点个小星星,多谢~
from splatoon2-bot.
1.地图是两个小时更新一次的,但是发两遍涂地。按照程序逻辑会访问两遍wiki,按照理论上来讲,2个小时内wiki页面都不会变动,是否可以设置一个缓存来避免无用的访问,只需要2小时清空一次网页缓存就行,这样可以避免重复的访问请求。
2.我发现在__init__.py中响应器指令为 凃地 而不是 涂地 我不确认这是否是作者的错别字。
3.使用Httpx异步的问题,我还是觉得有必要,这样nb就能在请求发出的时候去处理其他的事件,而不会被requests请求等待返回数据而导致业务堵塞。如果是有网页缓存,最多两小时访问一次网页,那异步就没有必要,如果是每次响应都需要请求,那就需要异步访问。
4.我在实际使用的过程中,还是会因为访问网页而卡死整个nonebot。我在查询文档发现requests有timeout参数,如果没有这个属性那么 连接超时的默认时间是 21s,而读取超时没有默认时间。我想我nonebot卡死的原因就在这里,希望作者可以考虑访问超时的情况。我对代码进行了少量的修改,来避免在我的设备上出现这种问题。我会提交一份我自己写好的代码,看看是否可以在这份代码中抽出有用的思路。
from splatoon2-bot.
缓存的方法可取,我之后看一下
涂地错别字是我的问题,也会改
异步那个我还是没太理解,nonebot对话请求不是本身就是异步的吗。
timeout之前加了之后忘记提交了,后面一直忘了,下个版本一起补上
from splatoon2-bot.
https://github.com/Sichongzou/splatoon2-bot
我在我的仓库中提交了一份代码,看看是否会有所帮助。
from splatoon2-bot.
Nonebot本来是异步,但是在requests时,因为requests是同步的,所以nonebot会停下所有的操作去执行requests请求并等待数据返回。网页响应快当然没有问题,但是当网页响应慢的时候,nonebot就会一直等待requests返回数据。
如果使用httpx异步就会不一样,当他执行到需要发送httpx请求之后,他只会将请求发出去,但是他不等待数据返回,直接执行其他操作,当httpx把数据返回之后,才会继续执行后续操作。
简单点来说,把请求过程来比作煮饭,requests就是一直在边上等着饭煮好,而异步的httpx就是你煮上饭之后去干其他的事情,等饭煮好了再进行后续操作。
我不知道我举的这个例子是否恰当,但希望能帮到你理解。
from splatoon2-bot.
已看到您的代码,我这两天看一下,顺便了解一下httpx异步
如果你不介意的话,我直接copy你的代码到我的项目中,你改的部分我会加上你的git id,这两天改完之后会重新上传一个版本。
感谢讲解,学到了,改完之后我会在这个issue反馈
from splatoon2-bot.
很荣幸我的代码能被您引用,如果我有更好的想法我会重新提交issue
from splatoon2-bot.
您好,今天我把 代理 缓存和定时任务以及开关定时任务都开发完了,还没有提交有点问题请教:
1.您代码里面的 splatoonclass这个变量是什么用意呢
2.以及permission=SUPERUSER这个SUPERUSER我在哪里可以配置呢,我在官网没有找到,不过我用了管理员和群主的方式
from splatoon2-bot.
1.splatoonclass这个变量,当时在代码中主要实现的是缓存的作用,您可以在定时任务中发现它每两个整点小时会被清空一次,主要赋值操作是在get_splatoonclass()方法中。主要里面承载的是utils.py中的SplatoonInfo类,因为SplatoonInfo在创建时会发送request取得返回数据并赋值,所以我干脆把创建的SplatoonInfo给留一个下来,这样2个小时内任何打工,涂地等图片生成,都会使用缓存下来的数据,而不是重新发送请求去取得数据。在get_splatoonclass()方法中,主要的代码逻辑为判断缓存中是否有缓存,没有缓存就重新生成SplatoonInfo作为缓存,我为了防止网页请求时间过长,或者无响应。我设置了timeout并且判断其中html值是否为空来循环发送请求。这样就能一直发送请求,直到请求成功为止,唯一可能有问题的就是如果请求一直不成功可能会出现卡死,不过基本上不会出现这个问题。
2.SUPERUSER是Nonebot自带的配置,您可以在.env.*的文件中配置它,如果没有您可以手动添加。具体您可以在Nonebot的文档中找到该配置项信息,以下链接可以快速帮您找到配置说明:https://v2.nonebot.dev/docs/tutorial/configuration
from splatoon2-bot.
新版本已经更新完上传pypi了,可以帮忙一起测一下吗
httpx异步试了好久没有达到挂在后台的效果,还是会阻塞代码,这边用了多线程的方法实现。而且因为推送数据需要判断是否生成新的缓存,如果多线程的话,系统如果获取不到数据也会推送,这边用了先清除缓存再生成缓存的方法,如果没有新的缓存生成,bot就会不发送新的图片,目前只想到了这个方法,如果有好方法后续再优化
用了缓存之后速度确实快了不少
from splatoon2-bot.
还是有些bug这两天我再改改
from splatoon2-bot.
金工重要,金工重要。bug放放
from splatoon2-bot.
V1.3.1版本加入 代理 缓存 并发 功能 这边自己测了两天应该没什么问题
from splatoon2-bot.
有问题再提新issues吧
from splatoon2-bot.
Related Issues (8)
- PIL生成图片的时候报错 OSError: cannot open resource HOT 2
- 图片丢失 HOT 6
- 时间错误。 HOT 9
- 启动插件报错了 HOT 20
- 功能添加 HOT 1
- 功能寄了 功能寄了 HOT 1
- 插件在尝试读取本不需要读取的图片 导致报错
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from splatoon2-bot.