中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django定時任務實現方法有哪些

發布時間:2021-12-30 17:39:28 來源:億速云 閱讀:241 作者:iii 欄目:開發技術

本篇內容介紹了“Django定時任務實現方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1. 前言

為了做一些報表,最近需要每日從愛站上抓取競爭對手的百度流量和移動流量,從我能實現的技術來看,大致有三種實現形式:

  1. 火車頭定時抓取

  2. python+crontab定時抓取,保存在txt或cav或數據庫中;

  3. django定時任務,用admin系統或模板系統展現。

第一種不熟悉,還要摸索;第二種數據展現還要自己寫,如果用數據庫,還要用很原始的連接方式,至少用了django之后是這樣;第三種優點是可以用admin系統或模板系統來,缺點是定時任務不熟悉。但考慮到打算深入學習django,于是決定用第三種方式來實現。

2. Django定時任務

Django的定時任務基本也有三種實現形式:

  1. django-celery

  2. Django的command+crontab

  3. 一些第三方庫,如django-crontab

首先,看了下django-celery的官方教程,celery還是比較龐大的,而且教程比較復雜,沒耐心的我就先行跳過了;

其次,又看了Django關于command的官方文檔,實現了command+crontab的形式。但因為是在virtualenv下部署,一直無法實現。即便crontab中已經設置了先進入virtualenv再運行command仍然失敗了(crontab中語法是source /home/../bin/activate && python /home/.../manage.py aizhan_visits)。

最后,選擇了第三方庫django-crontab,竟意外的實現了Django在virtualenv下的的定時任務。。

3. django-crontab實現Django在virtualenv的定時任務

3.1 django-crontab安裝

  • django-crontab安裝
    pip install django-crontab

  • django-crontab加入:只需要將django-crontab加入到settings.py的INSTALLED_APPS即可。如下代碼:

    INSTALLED_APPS = ( 'django-crontab', ... )

3.2 django-crontab配置

django-crontab可以定時運行自定義命令和函數兩種方式,因為之前嘗試用command+crontab時已經實現了自定義command,所以自然而然使用了自定義命令這種形式。

3.2.1 django-crontab定時運行命令

我先參考Django官方文檔自定義了一個命令aizhan_5domain_visits,專門用于抓取愛站流量,并將結果保存在sqlite3數據庫中(具體步驟在本文中不贅述了)。

其次,我在settings.py中加入了django-crontab的命令:

CRONJOBS = [ ('47 11 * * *', 'django.core.management.call_command', ['aizhan_5domain_visits']), ]

意思就是每天11點47分運行aizhan_5domain_visits這個命令。接下來就剩最后一步任務加載了。

3.2.2 django-crontab定時運行函數

django-crontab也可以定時運行函數,只是在CRONJOBS配置時有差別。CRONJOBS關于函數的配置如下:

分析結果:

  • 初級模式很直觀,意思就是每五分鐘執行一次my_scheduled_job這個程序;

  • 中級模式有個后綴,意思是將程序my_scheduled_job的結果輸出到文件/tmp/last_scheduled_job.log中;

  • 高級模式加入了參數,其中['dumpdata', 'auth']和{'indent': 4}都是參數,只是[]中的參數是按照順序代入,而{}中的參數指定了變量名稱,最后一個也是輸出結果的后綴。

3.3 django-crontab任務加載

django-crontab任務加載比較簡單,只需要運行python manage.py crontab add即可。如果你運行crontab -e可以看到crontab中多了一行:

 * * * /home/aizhan/bin/python /home/aizhan/aizhan/manage.py crontab run c27d1050fb7f87225bcff587ef5a35a3 # django-cronjobs for aizhan

這是django-crontab自動生成的。

  • 如果要移除所有的任務,則運行python manage.py crontab remove;

  • 當你修改了任務,需要再次運行python manage.py crontab add。

“Django定時任務實現方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善盟| 肇庆市| 依兰县| 新竹市| 三原县| 延川县| 康定县| 衡山县| 左云县| 崇信县| 恩施市| 辛集市| 武冈市| 托克逊县| 崇义县| 宜君县| 定襄县| 宿州市| 三亚市| 肇东市| 西昌市| 囊谦县| 黑山县| 九江市| 宁国市| 山东省| 鞍山市| 浦东新区| 新河县| 临汾市| 崇州市| 阿城市| 遵化市| 津南区| 潮安县| 朔州市| 台南县| 福鼎市| 六枝特区| 定安县| 如皋市|