預先在django中配置好celery,接下來著手配置下定時任務。
* 時區修改為本地時區
```# 在setttings.py 新增以下任意一行:
celery_timezone = 'asia/shanghai'
```如果使用了django-celery-beat持久化到資料庫,那麼需要手動執行更新命令
```$ python manage.py shell
>>> from django_celery_beat.models import periodictask
>>> periodictask.objects.update(last_run_at=none)
```*
使用periodic_task啟用定時任務,這裡可以看具體的crontab引數
from celery.task.schedules import crontab
from celery.decorators import periodic_task
import datetime
@periodic_task(run_every=crontab(minute="*/1"))
def print_hell_world():
print(f":hello world!")
然後使用celery -a proj woker -b 啟動
(crontab) lin@ubuntu:~/workspace/django/crontab$ celery -a crontab worker -b
-------------- celery@ubuntu v4.2.1 (windowlicker)
---- **** -----
--- * *** * -- linux-4.4.0-112-generic-x86_64-with-debian-stretch-sid 2019-03-17 06:30:07
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> transport: amqp://guest:**@localhost:5672//
- ** ---------- .> results: disabled://
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: off (enable -e to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[2019-03-17 06:30:08,142: warning/mainprocess] /home/lin/.local/share/virtualenvs/crontab-zinqxnpg/lib/python3.6/site-packages/celery/fixups/django.py:200: userwarning: using settings.debug leads to a memory leak, never use this setting in production environments!
warnings.warn('using settings.debug leads to a memory leak, never '
[2019-03-17 06:31:00,026: warning/forkpoolworker-2] 2019-03-17 06:31:00.026614:hello world!
[2019-03-17 06:32:00,023: warning/forkpoolworker-2] 2019-03-17 06:32:00.023664:hello world!
[2019-03-17 06:33:00,032: warning/forkpoolworker-2] 2019-03-17 06:33:00.032201:hello world!
使用django-celery-beat外掛程式,可以將定時任務配置持久化,並且方便的通過django-admin進行修改, 更多詳細資訊
...,
'django_celery_beat',
)
celery -a crontab_test worker -b -l info --scheduler django_celery_beat.schedulers:databasescheduler
Celery 定時任務
project celery task celery包 init py 包檔案 celery.py celery連線和配置相關檔案,且名字必須交celery.py tasks.py 任務體函式檔案 注意 任務體 檔案要與celery.py檔案在同乙個包下 beat也是乙個socket,啟動後會根據配...
Celery 定時任務
celery beat是乙個排程程式,它定期啟動任務,然後由集群中的可用工作程式節點執行任務。預設情況下,條目是從 beat schedule 設定中獲取的 但也可以使用自定義儲存,例如將條目儲存在sql資料庫中。必須確保一次只有乙個排程程式針對乙個排程任務執行,否則最終將導致重複的任務。使用集中式...
celery 執行celery定時任務
場景 在虛擬機器上執行 python django celery redis 的定時任務 可能遇到的問題 如果在執行過程中,定時任務突然退出,並報以下錯誤,錯誤顯示,沒有許可權訪問一些目錄檔案 解決方案 1 關閉當前redis服務 在step 3中有描述如何關閉 2 以root使用者執行啟動redi...