Python (django) 同时调用两个管理命令

Python (django) call two management commands at the same time

我正在为我的管理命令编写单元测试。我想 运行 我的两个管理命令同时使用 call_command() 函数。我怎样才能做到这一点?我需要同时 运行 它们,因为它们一起工作,一个创建数据,另一个使用该数据。

虽然我当然不认为这是正确的方法,但在 Python 中“同时”两个 运行 两件事的正确方法是使用 threads.

以下代码将启动两个线程,每个线程运行都有自己的管理命令。

from threading import Thread

def function1():
    call_command('fake')

def function2():
    call_command('engine')

thread1 = Thread(target=function1)
thread2 = Thread(target=function2)

thread1.start() # returns immediately
thread2.start() # returns immediately

import time
time.sleep(3600) # now we wait...

更好的方法是尝试创建一个单独的管理命令来执行您需要的操作,这样就不需要线程了。您会发现使用线程,尤其是作为初学者,会使事情变得不必要的复杂。