如何在django中重复轮询URL?

时间:2013-08-13 02:43:01

标签: python django request push-notification polling

我正在Django中构建推送通知服务器。

我想要构建的第一步是每隔1分钟重复轮询一次我选择的网址。

我无法确定工作所需的工具。

我认为我需要Django,一个Python APNS软件包,还有什么?

我可以使用请求库(人类库的HTTP请求)实际每分钟进行一次轮询吗?或者我需要一份cron工作?我很欣赏这种游戏计划。我无法弄清楚如何每分钟调用相同的URL并让它在后台运行。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您需要做的就是向URL发送GET请求,那么cron + curl将适合您。将以下行添加到您的crontab(how to):

* * * * * /usr/bin/curl --silent --compressed http://path.to/the/url

只要您的服务器启动,它就会每分钟轮询一次URL。


如果要将轮询与Django集成,请查看django-celery,这是Python和Django的后台任务队列。首先关注Celery's Django installation guide,然后看看this blog post谈论如何使用芹菜作为cron替代品。

对于您的用例,您可以使用

替换博客的示例任务
import requests

from celery.task.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=crontab(hour="*", minute="*", day_of_week="*"))
def test():
    response = requests.get('https://path.to/the/url/')
    process(response)