Как выполнять определённый код раз в минуту

Мне нужно чтобы код выполнялся раз в минуту, но это не получается.. Я придумал такой код но он не работает раз в минуту, а выполняется просто как обычный while очень быстро.

while True:
    print('f')
    asyncio.sleep(60)

Ответы (2 шт):

Автор решения: 5c0rp

Набросаю несколько вариантов

  1. Использование time.sleep
from time import sleep

while True:
   # do something
   sleep(60)
  1. Использование библиотеки schedule
# pip install schedule

def job():
    print("I'm working...")

schedule.every().minute.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)
  1. Использовать celery. Для этого способа нужно дополнительно установить rabbitmq либо redis.
# tasks.py
from celery import Celery
from celery.schedules import crontab

app = Celery('tasks', broker='адрес брокера')

@app.task
def add(x, y):
    return x + y

app.conf.beat_schedule = {
    'add': {
        'task': 'add',
        'schedule': crontab(minute='*/1'),
    }
}

Запускаем это командами celery -A tasks worker --loglevel=INFO и celery -A tasks beat --loglevel=INFO

→ Ссылка
Автор решения: Shap Po

Вы забыли добавить await перед использованием асинхронной функции:

while True:
    print('f')
    await asyncio.sleep(60)
→ Ссылка