请教一下大家,在django或者其他的项目中做定时任务?

有时候,需要在项目中做一些定时的任务,例如:我需要每隔几分钟去访问一个接口,然后根据返回值,做后续操作。

请教下,如何来实现?(PS:如果是用系统的crontab就不要说了。)

目前google了一种方法是使用celery。请加下大家,是否是条长期可行之路。
阅读 7.5k
8 个回答

如果用 Django 自带的服务器运行网站的话用 django-celery 就可以。但如果是用 uWSGI 跑的网站的话定时任务最好用 uWSGI 的 signal 做,其他方式的定时任务很可能会因为长时间占用线程的原因被 uWSGI kill 掉,之前我做过一个网站需要定时爬数据选择了好几种方案,最后还是用了 uWSGI 的 signal 比较稳定。

django-celery可以满足你的要求

也可以使用独立的Celery,针对定时任务使用Celery的beat就可以了。

可以直接用crontab, 如果希望更好的管理定时进程(比如使用supervisord工具)可以使用celery定时任务。
这里跑个题: flask配置celery定时任务

对于定时任务,我一般使用的是huey,之前使用过crontab,但是服务器上的虚拟环境使用脚本activate不了,搞了很久也没有解决到,后来就找到了huey,它其实类似于在django项目中安装了一个app,可以实现多线程、周期性等功能。

为啥不用crontab?crontab是最稳定的。

可以使用 Scheduler,因内容稍多,如果需要例子可以找我。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题