telegram_bots/feeds/tasks.py

38 lines
808 B
Python
Raw Normal View History

2019-01-26 09:36:44 +00:00
from celery_once import QueueOnce
2019-01-11 19:16:01 +00:00
from django.utils import timezone
from telebot import TeleBot
2019-01-19 06:52:00 +00:00
from djconfig import config
2019-01-11 19:16:01 +00:00
from config.celery import app
2019-01-26 09:36:44 +00:00
@app.task(base=QueueOnce)
def check_feeds():
2019-01-26 09:38:13 +00:00
from feeds.models import Feed
2019-01-26 09:36:44 +00:00
feeds = Feed.objects.filter(lock=False)
for feed in feeds:
feed.run_check()
2019-01-11 19:16:01 +00:00
@app.task()
def execute_feed(feed_pk):
from feeds.models import Feed
2019-01-25 16:33:22 +00:00
2019-01-25 16:33:54 +00:00
config._reload_maybe()
2019-01-11 19:16:01 +00:00
try:
feed = Feed.objects.get(pk=feed_pk)
if not feed.lock:
feed.lock = True
feed.save()
2019-01-19 06:52:00 +00:00
bot = TeleBot(config.feed_bot_token)
2019-01-11 19:16:01 +00:00
feed.last_id = feed.config.execute(bot, feed.chat_id, feed.last_id)
feed.last_check = timezone.now()
feed.save()
finally:
feed.lock = False
feed.save()