Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅从django视图实例化单个线程一次_Python_Django_Multithreading_Python Multithreading_Modbus - Fatal编程技术网

Python 仅从django视图实例化单个线程一次

Python 仅从django视图实例化单个线程一次,python,django,multithreading,python-multithreading,modbus,Python,Django,Multithreading,Python Multithreading,Modbus,我想知道是否有办法在django视图中只实例化一次守护进程线程(有点像单例方法)并管理它(随时停止/启动) 在我的django web应用程序中,我创建了一个管理页面,其中所有设备(传感器)都显示一个复选框。该复选框基本上只是更新数据库以将“isLogging”字段设置为true或false views.py def devices(request): assert isinstance(request, HttpRequest) devices = TDevices.objec

我想知道是否有办法在django视图中只实例化一次守护进程线程(有点像单例方法)并管理它(随时停止/启动)

在我的django web应用程序中,我创建了一个管理页面,其中所有设备(传感器)都显示一个复选框。该复选框基本上只是更新数据库以将“isLogging”字段设置为true或false

views.py
def devices(request):
    assert isinstance(request, HttpRequest)
    devices = TDevices.objects.all()

    if request.method == "POST":
        for device in devices:
            if "device_" + str(device.ixDevice) in request.POST:
                device.bIsLogging = True
                device.save()
            else:
                device.bIsLogging = False
                device.save()

    ping_sensor() #thread target function

    return render(request, 'devices.html' , context_instance = RequestContext(request, { 'title':'Device Management', 'devices': TDevices.objects.all()}))
当我的线程启动时,我希望它在后台连续运行,每5分钟查询一次数据库,检查哪些设备已启用,然后ping该设备以获取数据,同时用户可以去做其他事情

thread target function
def ping_sensor():
    #query db for enabled devices
    for device in TDevices.objects.all():
        if device.bIsLogging:
            print "ping : " + device.deviceName

我正在努力解决的问题是如何只创建一次线程并管理它(随时停止/启动它),因为我现在安装它的方式,它总是会在视图被称为

时创建新的线程。这是一种不同的方法,但很容易设置和处理。cronjob?我对此一无所知。我只是在看芹菜。芹菜比芹菜更简单。我只是看着它,这看起来正是我想找的东西。你考虑用Con Work来做这件事吗?这是一种不同的方法,但很容易设置和处理。cronjob?我对此一无所知。我只是在看芹菜。它比芹菜简单。我只是看了看,它似乎正是我要找的东西