【发布时间】:2019-08-30 17:57:22
【问题描述】:
我已经使用 Django 通道在 Django 应用程序中实现了 websocket,现在前端通过 websocket 发送一些数据,我希望当前正在运行的 celery 任务能够读取它。我尝试创建共享内存静态对象,但不工作。
SimulationInputs.add(simulation_id=simulation.id, init_data=init_inputs)
return InteractiveSimulationTask.delay_or_fail(
simulation_id=simulation.id
)
class SimulationData:
data = ''
class SimulationInputs:
data = None
@classmethod
def init_manager(cls, manager):
manager = Manager()
cls.data = manager.dict()
@classmethod
def add(cls, simulation_id, init_data):
cls.data[simulation_id] = init_data
@classmethod
def write(cls, simulation_id, simulation_data):
if cls.data.get(simulation_id):
cls.data[simulation_id] = simulation_data
@classmethod
def read(cls, simulation_id, simulation_data):
simulation_data.data = cls.data.get(simulation_id)
# manage.y
if __name__ == "__main__":
SimulationInputs.init_manager()
class InteractiveSimulationTask(JobtasticTask):
def calculate_result(self, simulation_id, **kwargs):
while True:
SimulationInputs.read(simulation_id=self.simulation.id, simulation_data=simulation_data)
任务总是抛出异常cls.data.get(simulation_id): NoneObjectType has no method get
我需要在 celery 任务和主进程之间共享数据。
有什么提示吗?
【问题讨论】:
标签: python django multiprocessing celery