Django:在哪里放置一个无限循环



我目前正在进行一个项目,需要将django应用程序与类似twitter的联邦服务mastodon集成。

为了与Mastodon互动,我使用Mastodon.py包:https://mastodonpy.readthedocs.io/en/stable/#

我需要使用包提供的流媒体功能来监控特定mastodon帐户发生的事件,该帐户是由django应用程序管理的机器人帐户:https://mastodonpy.readthedocs.io/en/stable/#streaming

所以我需要在一个无限循环中调用其中一个流方法。但我不知道该把它放在django的哪里。有一个主循环可以插入吗?

您需要在后台运行这类事情。有许多选项可供选择,以设置后台处理。

我发现以下内容很容易设置,这对你来说可能是一个好的开始。

Django后台任务

基本上,您创建了一个应该在后台完成的功能/作业。您可以使用特殊的装饰器对其进行注释,以注册为任务。

然后你可以选择何时运行——在你的情况下——你可以每隔一定的时间重复运行它(在你的工作任务中不需要"无限"循环(。

它是数据库后端任务队列,所以您将运行一个进程来监视您的任务,并在选定的时间运行它们。有关详细信息,请参阅文档。

也许您可以创建一个django命令,在其中放置无限循环,并让supervisor处理守护进程

您可以创建一个方法来处理您想要的任何内容,并在urls.py等文件中调用该方法(在服务器启动时只调用一次(。

在Django中工作时,不建议使用无限循环,但是,如果您无法使用方法,一个好的解决方案是创建一个单独的线程并在那里运行您的无限循环。

通过这种方式,Django应用程序将保持活动且不被阻塞,并且循环将运行并等待事件。

老实说,我不知道这在性能和速度方面是否是一个好的解决方案,但它确实起到了作用。

最新更新