Перезапуск асинхронной функции
Уважаемые знатоки, нужна ваша помощь, переписал бота для торговли игровыми вещами с node.js на python (первый опыт работы с ним), вроде все работает, но, для корректного обновления базы вещей, нужно вызывать определенную функцию раз в 20-30 минут, то есть, при старте бота, вызываются определенные функции и после 20-30 минут работы, нужно перезапустить определенную функцию, как это сделать?
async def main():
try:
# Удаляем все ордера
# Получаем вещи с loot.farm
# Получаем вещи с маркета
# Фильтруем вещи по (мин/макс цена, процент профита, количеству вещей на лутфарм)
# Разбиваем на части по 100
# Получаем цены вещей из MassInfo
# Выставляем ордера
await deleteOrders()
await asyncio.sleep(0.5)
await getItemsLootFarm()
await asyncio.sleep(0.5)
await getItemsMarket()
await asyncio.sleep(0.5)
await arrayChunk(profitItemsList)
await asyncio.sleep(0.5)
while True:
try:
# print(f"START")
for i in profitItemsList:
# {'id': '4458512696-0-Lightweight Chest Plate', 'maxBuyPrice': '39.79', 'percent': '36.84'}
classid = profitItemsList[i]['id'].split('-')[0]
instanceid = profitItemsList[i]['id'].split('-')[1]
market_hash_name = profitItemsList[i]['id'].split('-')[2]
maxBuyPrice = profitItemsList[i]['maxBuyPrice']
maxBuyPrice = float(maxBuyPrice)
percent = profitItemsList[i]['percent']
if marketBestOffer.get(market_hash_name):
best_offer = marketBestOffer[market_hash_name]['best_offer']
if best_offer < round(maxBuyPrice*100):
if len(oldOrderPrice) == 0 or oldOrderPrice.get(market_hash_name) == None or round(best_offer)+1 != oldOrderPrice[market_hash_name]:
await processOrder(classid, instanceid, market_hash_name, round(best_offer)+1, round(best_offer))
continue
# print(f"{oldOrderPrice[market_hash_name]}-{round(best_offer)+1}")
else:
await processOrder(classid, instanceid, market_hash_name, 0, round(best_offer))
continue
# print(f"{profitItemsList[i]}")
print(f" ============== [END] ==============")
await asyncio.sleep(1.0)
marketBestOffer.clear()
await arrayChunk(profitItemsList)
except Exception as e:
print(str(f"[main:while] {traceback.format_exc()}"))
except Exception as e:
print(str(f"[main] {traceback.format_exc()}"))
if __name__ in "__main__":
asyncio.run(main())
Через 20-30 минут нужно вызвать функцию deleteOrders()
UPD: Так как на момент написание поста была глубокая ночь, я не верно "поставил" конечную задачу, нужно не просто вызвать deleteOrders(), а нужно вызвать по сути начало скрипта
await deleteOrders()
await asyncio.sleep(0.5)
await getItemsLootFarm()
await asyncio.sleep(0.5)
await getItemsMarket()
await asyncio.sleep(0.5)
await arrayChunk(profitItemsList)
await asyncio.sleep(0.5)