2016-04-24 2 views
0

У меня есть конечная точка, которая получает некоторые данные, затем запускает некоторый код, который занимает около 30 секунд, а затем возвращает ответ, специфичный для данных. Мне нужно иметь возможность ударить по конечным точкам несколько раз с разными данными в течение 30 секунд, но код все равно нужно запустить и вернуть правильный результат данных.Python - код запуска одновременно

Вот что я имею в виду:

class Foo(Controller): 
    def POST(self, **kwargs): 
     [Run Code That Takes 30 Seconds] 
     Return [Result That Changes Bassed off POST request Sent] 

Когда я бегу это прямо сейчас, и я попал в конечной точке больше, чем один раз в 30 секунд, код просто перезагружается с новыми данными и полностью игнорировать старые данные и ее результаты ,

Как я могу разрешить ударам конечной точки более одного раза в секундах, но все же вернуть результат? Рад ответить на любые вопросы!

ответ

2

Сначала вы должны просмотреть свой скрипт, чтобы узнать, связана ли ваша задача cpu или io.

Если ваша задача ИО связана:

взглянуть на asyncio библиотеке python 3.

Или в библиотеке ниток python 2 + python 3.

Если ваша задача процессор связан

Если ваша задача процессор связан, вы не можете использовать потоки из-за GIL.

Вы есть выбор:

  • использовать библиотеку многопроцессорной: python2 + python3.

  • запустить экземпляр python для ядра процессора, каждый из которых выполняет другую задачу.

  • использовать задачу очереди, как Celery.

Смежные вопросы