Как запустить внешний python скрипт, который бесконечно запускается в Django и распечатать все выходные данные в html? - PullRequest
1 голос
/ 18 апреля 2020

У меня есть сценарий python, который за бесконечное время l oop получает некоторые данные из 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 и видеть его состояние и выходы (например, что видно в терминале). Кажется, я должен использовать задачу Queue вроде Celery. Но проблема в том, как выполнить этот скрипт в Celery. Мне нужно проверять его состояние и периодически показывать его результаты (каждые 3 минуты). Как мне это сделать? заранее спасибо.

1 Ответ

2 голосов
/ 19 апреля 2020

Это небольшой пакет для простых заданий в очереди, и его очень просто использовать

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/

...