Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 芹菜工人最佳实践_Django_Heroku_Celery_Priority Queue - Fatal编程技术网

Django 芹菜工人最佳实践

Django 芹菜工人最佳实践,django,heroku,celery,priority-queue,Django,Heroku,Celery,Priority Queue,我正在使用芹菜为我的Django应用程序运行后台作业,该应用程序由Heroku托管,Redis作为代理。我想设定任务优先级 我目前使用的是芹菜默认队列,所有的工作人员都从中获取食物。我曾考虑实施优先级划分,但到处都认为这是一种糟糕的做法。 关于处理优先问题的最佳办法的共识是:。比如说: 队列1用于分配给x个工作人员的最高优先级任务 Queue2默认队列,分配给所有其他工作人员 这种方法的第一个问题是,如果某个时候没有高优先级的任务,我会降低x工人的生产率 另外,假设我的基础设施扩展了,我有更多的

我正在使用芹菜为我的Django应用程序运行后台作业,该应用程序由Heroku托管,Redis作为代理。我想设定任务优先级

我目前使用的是芹菜默认队列,所有的工作人员都从中获取食物。我曾考虑实施优先级划分,但到处都认为这是一种糟糕的做法。 关于处理优先问题的最佳办法的共识是:。比如说:

队列1用于分配给x个工作人员的最高优先级任务

Queue2默认队列,分配给所有其他工作人员

这种方法的第一个问题是,如果某个时候没有高优先级的任务,我会降低x工人的生产率

另外,假设我的基础设施扩展了,我有更多的工人可用。只有默认工作人员的数量将动态扩展。此外,这种方法防止我在Heroku上保留相同的dynos容器,因为Heroku看起来没有针对可伸缩性进行优化


是否有一种有效的方法来处理任务优先级并同时保持可复制的工作人员?

对于答案,W1和W2分别是使用高优先级和低优先级任务的工作人员

可以将W1和W2作为单独的容器进行缩放。可以有三个容器,基本上是从同一个图像中绘制的。一个用于应用程序,两个用于工作人员。如果一种任务的数量较大,则只有该容器可以扩展。此外,根据您使用的dyno类型,您可以为工作人员设置并发性以更好地使用资源

供你参考,这是我在我的一个项目中做的事情


我想知道你在哪里读到使用优先级是一种不好的做法