4

我正在开发一个包含两个组件的系统——一个 Django Web 应用程序和一个监控进程。

监控进程连接到某处的 TCP/IP 服务器并使用专有协议接收事件指示。它还可以再次使用专有协议向服务器发送命令。

我想将监视器作为守护进程运行。它将连接到服务器并持续监控传入的事件。每当有事件到达时,监视器就会更新数据库。Web 应用程序将从数据库中获取当前状态。

不过,我有点坚持发送命令。我将需要 Django 网络应用程序以某种方式与监控服务进行通信。我可以按照这里的建议使用 Pyro,但我更愿意使用 Celery,因为我已经将它用于系统的其他部分。

如何让 Celery 工作人员管理监视器连接服务 Celery 请求?

注意:由于专有协议的限制,我无法打开到服务器的两个连接,因此不能让一个进程监视事件和另一个发送命令。

4

1 回答 1

3

如果您真的想在这个用例中使用 Celery,我建议您定义一个单独的队列,即server_monitor并将所有服务器监视器任务路由到该队列会更好。现在,为避免与服务器建立多个连接,请使用-c 1.

此外,由于您希望能够处理服务器监视器事件和 Celery 请求,请命令新工作人员同时为这两个队列提供服务-q celery,server_monitor。这样,worker 将同时处理这两种类型的请求,但要注意 - 如果您的队列流量很大,处理来自队列celery的请求可能需要很长时间。server_monitor

于 2013-10-05T08:55:44.063 回答