Цикл задач Discord.ext выполняется намного быстрее, чем предполагалось

#python #json #loops #discord.py

Вопрос:

В настоящее время я нахожусь в процессе создания бота для discord, который будет загружать и читать онлайн-файл, из которого пользователи смогут получать информацию. Я пытаюсь загружать его один раз в час, так как это интервал, в течение которого файл обновляется онлайн. Однако, благодаря некоторой отладке, кажется, что даже с ограничителем цикла код выполняется многократно так быстро, как только может.

 import os import random import csv import requests import json, xmltodict import xml.etree.ElementTree as ET from discord.ext import tasks, commands from dotenv import load_dotenv  load_dotenv() TOKEN = os.getenv('DISCORD_TOKEN')  bot = commands.Bot(command_prefix='!')  @bot.command(name='forecast') async def forecast(ctx, future_day=None):  if future_day is None:  future_day = 'today'  response = 'Here is the forecast for '   future_day   '!'  if future_day:  response = 'Here is the forecast for '   future_day   '!'  await ctx.send(response)    @tasks.loop(hours=1) async def download_xml_data():  print('Loop!')  loadRSS()  with open("C:/Users/thelu/Desktop/Bot/xmldata.xml") as xml_file:  data_dict = xmltodict.parse(xml_file.read())  json_data = json.dumps(data_dict)  xml_file.close()  with open("C:/Users/thelu/Desktop/Bot/data.json", "w") as json_file:  json_file.write(json_data)  #parseJSON(json_file)  json_file.close()   def loadRSS():  url = 'https://forecast.weather.gov/MapClick.php?lat=28.0794amp;lon=-80.6076amp;FcstType=digitalDWML'  resp = requests.get(url)  with open('C:/Users/thelu/Desktop/Bot/xmldata.xml', 'wb') as f:  f.write(resp.content)  f.close()   def parseJSON(jsonfile):  data = json.load(jsonfile)  print(data[0])    download_xml_data.start()  bot.run(TOKEN)  

Конкретная строка кода, которая меня интересует, — это вот эта:

 @tasks.loop(hours=1)  

Я не уверен, что является причиной того, что это не соответствует правилу «один раз в час», но я не могу этого понять.

Комментарии:

1. Кажется, все в порядке. Как часто он работает в данный момент?