Django 和多线程

问题描述 投票:0回答:1

我有 Django 视图:

def func():
    ...
    instance = ...create()
    func2(instance)
    instance.attr = attr
    etc...

因此 func() 创建一个实例,调用 func2() 并继续工作。

def func2(instance):
    request = request(instance)
    wait response
    response.data.save()

函数 1 和函数 2 的结果没有任何关系。功能2与输出/输入操作相关。函数2必须被函数1调用,并且不能阻塞函数1的运行。在当前项目版本中,func2是用celery调用的。但我不确定这是否是正确的方法,最好用另一个线程调用 func2 。

def func():
    ...
    instance = ...create()
    thread = threading.Thread(target=func2, args=instance)
    thread.run()
    instance.attr = attr
    etc...

我说得对吗?非常感谢!

python django multithreading celery
1个回答
0
投票

使用 celery 任务并等待他们的响应(celery 支持这一点)并且它更干净。

如果你不能使用 celery 或其他一些异步包,那么重新设计你的设计/需求。

我会避免任何多线程。它总是会以某种方式回来咬我。

© www.soinside.com 2019 - 2024. All rights reserved.