djagno-celery更新task.py重新启动所有任务和celery方法?

时间:2019-06-14 03:02:32

标签: django celery iot

我有网络物联网系统。我需要后台异步任务来收集物联网设备数据,然后将其存储到数据库。task.py作业在循环运行时收集数据,而不会停止。更新task.py时,我将停止所有正在运行的任务并重新启动celery。但是我有20台或更多的设备,所以我有20项正在运行的任务,这不是一个好的解决方案。有什么好主意吗?谢谢。

这是task.py,我有一个可以动态运行任务的网络GUI。

@app.task(bind=True, base=AbortableTask, max_retries=None)
def getDeviceValue(self, deviceName):
    data = getDeviceData(deviceName)
    insertData(data)
    return deviceName

这是在网络gui上启动的view.py处理任务。

class DeviceTaskStart(View):

    def get(self, request, deviceName, *args, **kwargs):
        taskData, isCreate = TaskData.objects.get_or_create(name=deviceName)
        if isCreate:
            taskId = getDeviceValue.delay(deviceName)
            taskData.taskId = taskId
            taskData.save()
        else:
            state = app.AsyncResult(taskData.taskId).state
            print(state)
        return redirect(reverse(self.pattern_name))

0 个答案:

没有答案