Как перезапускать код по истечению времени, если он не выполнился?

У меня есть строчка кода, которая с помощью vk api получает последнее сообщения в vk. Иногда, как я понимаю из-за нестабильного интернет соединения, программа застревает на этой строчке кода и по сути бездействует (бесконечно грузит, а если перезапустить всё приходит в норму). Мне нужно сделать так, чтобы через 5 секунд эта строчка кода выполнялась заново или просто пропускалась, если она ещё не выполнилась. Код на python.

Вот часть кода:

my_token = 'токен'
session= vk_api.VkApi(token = my_token)
vk = session.get_api()
#Получает сообщения
def GetMessage(GId,vk):
    VkInfoMessage={'items': [{'text': ''}]}

    def GetMes(GId,vk):
        VkInfoMessage={'items': [{'text': ''}]}
        try:
            #вот эта строчка
            VkInfoMessage = vk.messages.getHistory(peer_id = GId, count=1)
        except:
            pass
        return VkInfoMessage

    time.sleep(0.3)
    VkInfoMessage = GetMes(GId,vk)
    Message = VkInfoMessage['items'][0]['text']

    return Message

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

Автор решения: Kers

Как вариант обернуть все это в поток:

import threading
import time

def main():
    while True:
        thread = threading.Thread(target=my_func)
        thread.daemon = True
        thread.start()
        thread.join(5)
        print("restart")
        continue

def my_func():
    time.sleep(100)

if __name__ == '__main__':
    main()

Вместо my_func соответственно Ваш код.

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

Если вы собираетесь разместить бота на сервере, то скорее всего там будет линукс, поэтому можно настроить демона вроде systemd. Например, когда сервера ВК будут перезагружаться (обычно это в 2 часа ночи), ваша программа упадет, но демон поднимет её обратно. Так же плюсом можно отметить логирование статуса программы.

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

Пример из моего бота VK:

import vk_api
import random
import time
import traceback
vk = vk_api.VkApi(token="token")
while True:
    try:
        php = vk.method("messages.getHistory", {"count":1,"user_id":id владельца,"peer_id":id переписки})
        count = php.get("count")
        if count != 0:
            peer_id = php.get("items")[0].get("peer_id")
            text = php.get("items")[0].get("text")
            att = php.get('items')[0].get('attachments')
            from_id = php.get('items')[0].get("from_id")
            ids = php.get("items")[0].get("id")
            ids = str(ids)
            text = text.lower()
            name = vk.method("users.get",{"user_ids":str(from_id)})
            fn = name[0].get("first_name")
            rand = int(random.randint(1,1000))
            if peer_id == 2000000184:
                # Работа с данными в диалоге
        time.sleep(3)
    except Exception:
        print(traceback.format_exc())

Пробуй, возможно traceback тебе поможет. Он никогда не падал, если только выдавал ошибки, при отключении от сервера VK. Ошибка выглядит вот так

vk_api.exceptions.ApiError: [38] Unknown application: could not get application

Обычно от 2 до 4 утра приходят

→ Ссылка