芹菜根本不运行任务/定期



我在管理/命令下使用的这个函数正在运行,但我想用它定期更新提要。大约每15分钟一次。

celery.py

from celery import Celery
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
app = Celery('mysite',
broker='redis://',
backend='rpc://',
include=['mysite.tasks'],
timezone='UTC')
if __name__ == '__main__':
app.start()

tasks.py

from .celery import app
from news.models import Feed, Article
import feedparser
from datetime import datetime, timezone

@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(60.0, handle.s(), name='update feeds every 60 seconds')

@app.task
def handle(self, *args, **kwargs):
feeds = Feed.objects.all()
for feed in feeds:
new_list = feedparser.parse(feed.url)
for entry in new_list.entries:
start = datetime.now(timezone.utc)
end = datetime(*(entry.published_parsed[0:6])).replace(tzinfo=timezone.utc)
if (start - end).days < 2 and not Article.objects.filter(url=entry.link).exists():
article = Article()
article.title = entry.title
article.url = entry.link
article.description = entry.description
dateString = end.strftime('%Y-%m-%d %H:%M:%S %z')
article.publication_date = dateString
article.save()
else:
pass

我运行celery -A mysite worker -l INFO[任务]
。mysite.tasks.handle

我也尝试了celery -A mysite beat
没有错误,但我看不到对我的网站有任何影响

我还尝试在两个终端中运行这两个命令。

在设置目录中为芹菜创建文件

celery_conf.py

import os
from celery import Celery
from datetime import timedelta
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<path to settings like=> config.settings>')
celery_app = Celery('<settings direcory name like=>config>')
celery_app.autodiscover_tasks()
celery_app.conf.broker_url = 'amqp://'
celery_app.conf.result_backend = 'rpc://'

在你的应用程序中,无论你在哪里需要芹菜,都可以创建tasks.py文件创建自己的函数(在tasks.py文件中(,并将shared_task decorator设置为函数

tasks.py
from celery import shared_task
@shared_task
def send_email():
.....

Celery使用shared_task识别任务

***不要忘记在任务调用中使用延迟***

相关内容

  • 没有找到相关文章

最新更新