Giter VIP home page Giter VIP logo

Comments (15)

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

1.代理功能已经更新,请看最新的更新日志
2.关于异步,nonebot2原生支持异步,这个插件也只是获取一次单个网页,个人理解是没必要使用httpx的异步,如果我的理解有问题,麻烦指正
3.关于2小时定时推送,这个插件个人初衷是给私人小群用,后面想如果其他人有需求也可以用所以才发布,调整定时任务需要有一定的改动量,个人暂时没有精力调整,如果您有兴趣,可以提交pr

最后,感谢您的使用和提出宝贵意见

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

如果插件帮到了您,麻烦您点个小星星,多谢~

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

1.地图是两个小时更新一次的,但是发两遍涂地。按照程序逻辑会访问两遍wiki,按照理论上来讲,2个小时内wiki页面都不会变动,是否可以设置一个缓存来避免无用的访问,只需要2小时清空一次网页缓存就行,这样可以避免重复的访问请求。

2.我发现在__init__.py中响应器指令为 凃地 而不是 涂地 我不确认这是否是作者的错别字。

3.使用Httpx异步的问题,我还是觉得有必要,这样nb就能在请求发出的时候去处理其他的事件,而不会被requests请求等待返回数据而导致业务堵塞。如果是有网页缓存,最多两小时访问一次网页,那异步就没有必要,如果是每次响应都需要请求,那就需要异步访问。

4.我在实际使用的过程中,还是会因为访问网页而卡死整个nonebot。我在查询文档发现requests有timeout参数,如果没有这个属性那么 连接超时的默认时间是 21s,而读取超时没有默认时间。我想我nonebot卡死的原因就在这里,希望作者可以考虑访问超时的情况。我对代码进行了少量的修改,来避免在我的设备上出现这种问题。我会提交一份我自己写好的代码,看看是否可以在这份代码中抽出有用的思路。

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

缓存的方法可取,我之后看一下
涂地错别字是我的问题,也会改
异步那个我还是没太理解,nonebot对话请求不是本身就是异步的吗。
timeout之前加了之后忘记提交了,后面一直忘了,下个版本一起补上

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

https://github.com/Sichongzou/splatoon2-bot

我在我的仓库中提交了一份代码,看看是否会有所帮助。

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

Nonebot本来是异步,但是在requests时,因为requests是同步的,所以nonebot会停下所有的操作去执行requests请求并等待数据返回。网页响应快当然没有问题,但是当网页响应慢的时候,nonebot就会一直等待requests返回数据。

如果使用httpx异步就会不一样,当他执行到需要发送httpx请求之后,他只会将请求发出去,但是他不等待数据返回,直接执行其他操作,当httpx把数据返回之后,才会继续执行后续操作。

简单点来说,把请求过程来比作煮饭,requests就是一直在边上等着饭煮好,而异步的httpx就是你煮上饭之后去干其他的事情,等饭煮好了再进行后续操作。

我不知道我举的这个例子是否恰当,但希望能帮到你理解。

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

已看到您的代码,我这两天看一下,顺便了解一下httpx异步
如果你不介意的话,我直接copy你的代码到我的项目中,你改的部分我会加上你的git id,这两天改完之后会重新上传一个版本。
感谢讲解,学到了,改完之后我会在这个issue反馈

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

很荣幸我的代码能被您引用,如果我有更好的想法我会重新提交issue

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

您好,今天我把 代理 缓存和定时任务以及开关定时任务都开发完了,还没有提交有点问题请教:
1.您代码里面的 splatoonclass这个变量是什么用意呢
2.以及permission=SUPERUSER这个SUPERUSER我在哪里可以配置呢,我在官网没有找到,不过我用了管理员和群主的方式

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

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.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

新版本已经更新完上传pypi了,可以帮忙一起测一下吗
httpx异步试了好久没有达到挂在后台的效果,还是会阻塞代码,这边用了多线程的方法实现。而且因为推送数据需要判断是否生成新的缓存,如果多线程的话,系统如果获取不到数据也会推送,这边用了先清除缓存再生成缓存的方法,如果没有新的缓存生成,bot就会不发送新的图片,目前只想到了这个方法,如果有好方法后续再优化
用了缓存之后速度确实快了不少

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

还是有些bug这两天我再改改

from splatoon2-bot.

Sichongzou avatar Sichongzou commented on July 27, 2024

金工重要,金工重要。bug放放

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

V1.3.1版本加入 代理 缓存 并发 功能 这边自己测了两天应该没什么问题

from splatoon2-bot.

DrinkOolongTea avatar DrinkOolongTea commented on July 27, 2024

有问题再提新issues吧

from splatoon2-bot.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.