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

时间:2016-04-08 14:08:27

标签: python django multithreading python-multithreading modbus

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

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

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

我遇到的问题是如何只创建一个线程并管理它(随时停止/启动它),因为我现在设置它的方式它总是会在调用视图时创建新线程

0 个答案:

没有答案