如何运行在Django中无限运行的外部python脚本并以html打印所有输出?

2024-06-16 08:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它在一个无限循环中从URL获取一些数据,并将其保存在数据库中。它会打印一些日志,有时会抛出一些错误。我的脚本如下:

   dbclient = MongoClient('127.0.0.1')
   db = dbclient.shell
   while True:
       url = "http://example.com/api"
       print("request has been sent====================")
       response = requests.get(url).json()
       print("data has been downloaded====================")
       db.api_backup.insert_many(response)
       print("data has been saved in MongoDB====================")

现在,我已经创建了一个Django项目用于监控。因此,我希望能够通过Html页面上的一个按钮启动和停止它,并查看它的状态和输出(就像在终端中看到的一样)。 看来我应该使用像芹菜这样的任务队列。但问题是如何在芹菜中执行此脚本。我需要定期(每3分钟)检查其状态并显示其输出。 我怎么做? 提前谢谢


Tags: 数据脚本api数据库urldbdataresponse
1条回答
网友
1楼 · 发布于 2024-06-16 08:31:47

这是一个很好的小程序包,用于简单的队列作业,并且非常易于使用

https://python-rq.org/

从服务器开始:

import requests

def count_words_at_url(url):
    resp = requests.get(url)
    return len(resp.text.split())

然后创建一个队列:

from redis import Redis
from rq import Queue

q = Queue(connection=Redis())

以及函数调用

from my_module import count_words_at_url
result = q.enqueue(
             count_words_at_url, 'http://nvie.com')

对于更复杂的内容,您可以阅读以下文档:

https://python-rq.org/docs/

相关问题 更多 >