【发布时间】:2019-07-08 08:24:24
【问题描述】:
大家好!
我想讨论一下,看看有什么更好的方法来解决我的问题。
我有一个使用多种协议(FTP(S)、SFTP、S3、电子邮件)向客户端发送文件的应用程序。
每个目录都有一个 celery 任务。一个目录可以发送到多个客户端,也可以发送到多个目的地。例如dir1 -> client1 -> FTP 和 EMail(2 个任务,可以并行运行),dir2 -> client1 AND client2 -> 相同的 FTP 主机名,不同的远程目录(2 个任务,不能并行运行)。
这工作正常,但有时我会导致客户端网络拥塞,由于多个工作人员到同一目的地的多个连接,一些客户端不知道(或想要实施)QOS。
我想要一个逻辑,不允许连接到相同协议或主机名的任务同时运行。例如,发送到 2 个 S3 存储桶的目录应该运行一次,完成后第二次将启动。或者两个不同的目录被发送到同一个 FTP 服务器。
我最初的想法是实现一个 celery_worker 队列远程控制。每个帐户,协议一个队列。并设置具有并发 1 的工作人员侦听队列。
想知道你们中是否有人遇到过类似的挑战,以及你们是如何解决的。
【问题讨论】:
-
所以要理解你可以通过不同的协议并行发送文件到同一个客户端,但是不能通过相同的协议并行发送到多个客户端,对吧?
-
协议可以并行化,我不能并行化发送到同一服务器的文件。
标签: python python-3.x celery celery-task