170 похожих чатов

Бля, я не могу, помираю помогите. есть код: async def upd_pref():


for chat_id in db["chats"]:
chat = db["chats"][chat_id]
for user_id in chat["users"]:
u_id = int(user_id)
user = chat["users"][user_id]
if "prefix" in user:
prefix = user["prefix"].copy()
duration = prefix.get("duration")
if duration is not None and duration > 0:
prefix["duration"] -= 1
if prefix["duration"] == 0:
prefix["prefix_name"] = ""
if u_id in chat["users"]:
chat["users"][u_id]["prefix"] = prefix
saver.save()
print ("its okay")

написал для него apscheduler:

async def stscheduler():
scheduler = AsyncIOScheduler()
scheduler.add_job(upd_pref, 'interval', minutes=1)
scheduler.start()

задачу запускает:

apscheduler.executors.default:Running job "upd_pref (trigger: in
terval[0:01:00], next run at: 2023-05-10 12:33:38 UTC)" (scheduled at
2023-05-10 12:32:38.968974+00:00)
its okay
INFO:apscheduler.executors.default:Job "upd_pref (trigger: interval[0
:01:00], next run at: 2023-05-10 12:33:38 UTC)" executed successfully

но изменения в бд не происходят.
saver.save()

class NotifyingFuture(asyncio.Future):
def init(self, *args, **kwargs):
self.__to_notify_on_await = kwargs.pop("on_await", None)
super().init(*args, **kwargs)


async def _wait_then_do(time, task, *args, **kwargs):
await asyncio.sleep(time)
return await task(*args, **kwargs)

class DbSaver:

def init(self):
self._pending = None
self._waiter = asyncio.Event()
self._sync_future = None

@staticmethod
async def _set():
with open(db_path, "w") as f:
f.write(json.dumps(db, indent=2))

def _cancel_then_set(self):
if self._pending is not None and not self._pending.cancelled():
self._pending.cancel()

self._pending = asyncio.ensure_future(self._set())

def save(self):
if self._pending is not None and not self._pending.cancelled():
self._pending.cancel()

if self._sync_future is None or self._sync_future.done():
self._sync_future = NotifyingFuture(on_await=self._cancel_then_set)

self._pending = asyncio.ensure_future(
_wait_then_do(5, self._set)
) # Delay database ops by 10s

return self._sync_future


saver = DbSaver()


куда копать и на что смотреть?

1 ответов

25 просмотров

Живи

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта