Потоки Python: лучшая практика для запуска одного потока, отбрасывая все остальные - PullRequest
0 голосов
/ 18 июня 2019

У меня есть приложение фляги, работающее с базовым API REST http, в котором код на одной конечной точке выглядит следующим образом:

@app.route('/api/endpoint'), methods=['GET', 'POST'])
def endpoint():
    response = ImportedApiCall()
    stuff()
    # Running this in a thread because we 
    # need somefunc() to run in the background
    # while returning response right away, but we only
    # need somefunc() to run once and only once while
    # this API endpoint receives a burst of hits
    thread = threading.Thread(target=someclass.somefunc, args = (arguments,))
    thread.start()
    # This is needed by the external API that 
    # hits /api/endpoint
    return str(response) 

Дело в том, что эта конечная точка в / api / endpoint будет поражена несколько раз, и мне нужно, чтобы она запускала код, порожденный как поток, в значительной степени только в ПЕРВЫЙ раз, когда она выполняется, игнорируя все остальные, пока Функция в someclass.somefunc работает, что гарантированно занимает около пары минут, в то время как эти обращения к API происходят в определенный период времени. Я понимаю, что, вероятно, я должен использовать функцию потокового события, чтобы сделать это, но я не на 100% уверен, что лучший способ это сделать, так как кажется, что это чревато множеством подводных камней и предостережения (я привык к языкам, где параллелизм менее запоздалая мысль). Должен ли я как-то вставить объявление события в __init__ на someclass.somefunc или написать совершенно новый класс обработчика событий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...