Python 在django'中模拟延迟;睡眠中的世界观

Python 在django'中模拟延迟;睡眠中的世界观,python,django,python-3.x,django-views,Python,Django,Python 3.x,Django Views,在我的django应用程序中,用户可以定义特定操作的一些延迟(以秒为单位)——它被用来模拟网络延迟 我可能会以数百个这样的事件结束 在我的django看来,到目前为止我所实现的只是: class NetworkDelayView(View): def dispatch(self, request, *args, **kwargs): obj = Event.objects.get(short_uuid=kwargs.get('uuid')) if obj.

在我的django应用程序中,用户可以定义特定操作的一些延迟(以秒为单位)——它被用来模拟网络延迟

我可能会以数百个这样的事件结束

在我的django看来,到目前为止我所实现的只是:

class NetworkDelayView(View):
    def dispatch(self, request, *args, **kwargs):
        obj = Event.objects.get(short_uuid=kwargs.get('uuid'))
        if obj.enable_delay:
             sleep(obj.delay)
        return super().dispatch(request, *args, **kwargs)
出于以下几个原因,我不确定这是否是最好的方法:

  • 线程-据我所知,它将阻止所有请求

  • 我在共享主机上运行我的django/python应用程序,使用passenger


如果这样做是正确的,有什么建议吗?也许有更好的方法。

上述方法一点也不好,您应该安排任务并执行该任务中的所有操作。任务将在延迟后运行,您不会被阻止进一步请求。使用芹菜进行异步任务

使用ConcountDown将任务延迟一段时间


听起来您需要模拟延迟;但是没有线程在延迟上被阻塞。从草草阅读;乘客似乎不支持此工作流。你有没有研究过uWSGI的异步模式,你会如何使用芹菜延迟HttpResponse?不,HttpResponse不能通过芹菜延迟,延迟http响应也是不好的。正如我所说,它被用来模拟网络延迟,所以它必须延迟-这是如何延迟的问题,而不是如果;)