首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django计划任务

Django计划任务
EN

Stack Overflow用户
提问于 2019-01-12 06:07:17
回答 1查看 1.6K关注 0票数 1

我想在我的网站上显示当前美元/比特币价格对的汇率。为此,我设置了芹菜和一个小periodic_task。我现在真的不能理解如何调用这个periodic_task任务或者显示它返回的json数据。

这是我的celeter设置的样子:

__init_.py

代码语言:javascript
复制
    from __future__ import absolute_import, unicode_literals
    from .celery import app as celery_app

__all__ = ('celery_app',)

celery.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

所以我的问题是,如何触发periodic_task并显示json数据/字段"price_usd“的返回?在模板中

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 06:12:55

您需要启动一个celerybeat实例。它将调度和发送您可以按一定时间间隔设置的事件。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54154684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档