Цикл Apscheduler cronjob выполняет некоторые, но не все записи несколько раз
Всем привет у меня возник вопрос по поводу apscheduler и forloop
Вот моя работа, которая берет все записи из базы данных и сверяет их с текущим часом, если нет уже действующей записи, сохраняет ее в базе данных:
from datetime import datetime
from website.models import *
from website.forms import *
import website.lib.definer as dfin
import website.lib.formsaver as frmsave
all_in_use_items = PersonalisedItemInfo.objects
def pitemjob():
for items in all_in_use_items:
last_itemdatabase_entry = PersonalisedItem.objects.filter(item_info=items).order_by('-creation_date')[0]
last_entry = last_itemdatabase_entry.creation_date
last_entry_formatted = last_entry.strftime("%y-%m-%d %H")
now = datetime.now()
current_time = now.strftime("%y-%m-%d %H")
if last_entry_formatted == current_time:
pass
else:
ptif_form= PersonalisedItemInfoForm(instance=items)
url = ptif_form.instance.url
price = dfin.ptdefiner(url)
PersonalisedItem.objects.create(
item_info = items,
price = price
)
В моем файле scheduler.py у меня есть:
def start():
scheduler = BackgroundScheduler(timezone="Europe/Berlin")
scheduler.start()
scheduler.add_job(pitemjob,'cron', hour='20')
Теперь все работает нормально, если я не использую этот forloop вывод красивый и упорядоченный, но не учитывается. Поэтому иногда у меня есть двойные записи с учетом того, что ввели пользователи. Именно этого я хочу избежать с помощью forloop.
нормальный выход:
Database item entry 1
Database item entry 2
Database item entry 3
Database item entry 4
но мой вывод forloop дает что-то вроде этого:
Database item entry 3
Database item entry 1
Database item entry 2
Database item entry 3
Database item entry 4
Database item entry 4
совершенно случайные вводы в базу данных. Часто бывает случайным, что элементы сохраняются дважды. На самом деле это обратная вещь, которой я хочу добиться. Я просто хочу избежать добавления двойных записей в базу данных, но мой forloop и apscheduler делают это в любом случае.
Может кто-нибудь подсказать, как это исправить?
Заранее спасибо.