celery定時任務

2022-06-29 23:15:16 字數 2290 閱讀 4353

預先在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...