Python - 同时运行代码

时间:2016-04-24 20:03:31

标签: python post endpoint

我有一个端点,它获取一些数据,然后运行一些代码,大约需要30秒,然后返回特定于数据的响应。我需要能够在30秒内使用不同的数据多次点击端点,但代码仍然需要运行并返回正确的数据特定结果。

这就是我的意思:

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

当我立即运行此操作并且我在30秒内多次点击端点时,代码只会重新启动新数据并完全忽略旧数据及其结果。

如何在几秒钟内允许端点被多次击中但仍会返回相应的结果?很高兴回答任何问题!

1 个答案:

答案 0 :(得分:2)

您应首先配置脚本,以查看您的任务是cpu还是io bound。

如果您的任务受到约束

查看asyncio库python 3

或者在线程库python 2 + python 3

如果您的任务是cpu绑定

如果您的任务是cpu绑定的,则由于GIL而无法使用线程。

您可以选择:

  • 使用多处理库:python2 + python3

  • 运行每个cpu核心的python实例,每个实例执行不同的任务。

  • 使用Celery之类的任务队列。