Django запланированные задания - PullRequest
0 голосов
/ 12 января 2019

Я хочу отобразить текущий курс обмена USD / Bitcoin на моем веб-сайте. Для этого я поставил сельдерей и небольшую периодическую задачу. В настоящее время я не могу понять, как я вызываю эту задачу period_task или отображаю данные json, которые она возвращает.

вот так выглядит моя установка селектора:

__ init_.py

    from __future__ import absolute_import, unicode_literals
    from .celery import app as celery_app

__all__ = ('celery_app',)

celery.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

tasks.py

from celery import Celery
from celery.schedules import crontab
from celery.task import periodic_task
from celery.utils.log import get_task_logger
import requests

logger = get_task_logger(__name__)
app = Celery('tasks', broker='redis://127.0.0.1')



@app.task
def test():
    return "Test Successful"


@periodic_task(run_every=(crontab(minute='*/15')), name="get_btc_exchange_rate", ignore_result=True)
def get_exchange_rate():
    api_url = "https://api.coinmarketcap.com/v1/ticker/?limit=1"
    try:
        exchange_rate = requests.get(api_url).json()
        logger.info("BTC Exchange rate updated.")
    except Exception as e:
        print(e)
        exchange_rate = dict()
    return exchange_rate

В настоящее время я заявляю сельдерей с помощью этого сценария: https://gist.github.com/psych0der/44a8994495abee1b4e832420c1c2974d

Итак, мой вопрос: как я могу вызвать эту period_task и отобразить возвращение данных / поля json "price_usd"? в шаблоне

Заранее спасибо

1 Ответ

0 голосов
/ 12 января 2019

Вам нужно будет запустить экземпляр сельдерея. Он будет планировать и отправлять события, которые вы можете установить с интервалом.

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

...