有时候,需要在项目中做一些定时的任务,例如:我需要每隔几分钟去访问一个接口,然后根据返回值,做后续操作。 请教下,如何来实现?(PS:如果是用系统的crontab就不要说了。) 目前google了一种方法是使用celery。请加下大家,是否是条长期可行之路。
学习是最好的投资!
如果用 Django 自帶的伺服器運行網站的話用 django-celery 就可以。但如果是用uWSGI 跑的網站的話定時任務最好用uWSGI 的signal 做,其他方式的定時任務很可能會因為長時間佔用線程的原因被uWSGI kill 掉,之前我做過一個網站需要定時爬數據選擇了好幾個方案,最後還是用了uWSGI 的signal 比較穩定。
django-celery可以滿足你的要求
也可以使用獨立的Celery,針對定時任務使用Celery的beat就可以了。
可以直接用crontab, 如果希望更好的管理定時進程(例如使用supervisord工具)可以使用celery定時任務。 這裡跑個題: flask配置celery定時任務
有人做了一個Django的模組:django_crontab
對於定時任務,我一般使用的是huey,之前使用過crontab,但是伺服器上的虛擬環境使用腳本activate不了,搞了很久也沒有解決到,後來就找到了huey,它其實類似於在django專案中安裝了一個app,可以實現多執行緒、週期性等功能。
為啥不用crontab? crontab是最穩定的。
可以使用 Scheduler,因為內容稍多,如果需要例子可以找我。
如果用 Django 自帶的伺服器運行網站的話用 django-celery 就可以。但如果是用uWSGI 跑的網站的話定時任務最好用uWSGI 的signal 做,其他方式的定時任務很可能會因為長時間佔用線程的原因被uWSGI kill 掉,之前我做過一個網站需要定時爬數據選擇了好幾個方案,最後還是用了uWSGI 的signal 比較穩定。
django-celery可以滿足你的要求
也可以使用獨立的Celery,針對定時任務使用Celery的beat就可以了。
可以直接用crontab, 如果希望更好的管理定時進程(例如使用supervisord工具)可以使用celery定時任務。
這裡跑個題: flask配置celery定時任務
有人做了一個Django的模組:django_crontab
對於定時任務,我一般使用的是huey,之前使用過crontab,但是伺服器上的虛擬環境使用腳本activate不了,搞了很久也沒有解決到,後來就找到了huey,它其實類似於在django專案中安裝了一個app,可以實現多執行緒、週期性等功能。
為啥不用crontab? crontab是最穩定的。
可以使用 Scheduler,因為內容稍多,如果需要例子可以找我。