小编Hon*_*nza的帖子

Celery和RabbitMQ - 队列优先级与消费者优先级与任务优先级

在我的python应用程序中,我使用Celery作为任务生产者和消费者,使用RabbitMQ作为经纪人.现在,我正在实施优先级.起初,它看起来根本不起作用,因为根据文档,我刚刚x-max-priority为队列添加了参数.我更深入地查看,并且我发现了另一个优先级 - 消费者优先级和任务优先级.所以,现在看起来有三种不同的优先级,我完全糊涂了.你能解释一下我的区别吗?

队列最高优先级:viz https://www.rabbitmq.com/priority.html

Queue('my_queue', exchange=Exchange('my_queue'), routing_key='my_queue', queue_arguments={'maxPriority': 10})
Run Code Online (Sandbox Code Playgroud)

消费者优先权:viz https://www.rabbitmq.com/consumer-priority.html

Queue('my_queue', exchange=Exchange('my_queue'), routing_key='my_queue', consumer_arguments={'priority': 10})
Run Code Online (Sandbox Code Playgroud)

任务优先级:viz https://github.com/celery/celery/issues/2635#issuecomment-173597053

my_task.apply_async(args=(arg1, arg2), priority=6)
Run Code Online (Sandbox Code Playgroud)

谢谢.

经过更多研究后编辑:

正如我在阅读后所理解的那样:

队列最大优先级是一种限制,并告诉该队列仅侦听优先级设置为max max到此参数的任务.但是优先级更高的任务呢?队列是否优先于自身最大定义?忽略它们?

消费者优先权看起来像消费者的优先次序.如果有两个具有不同优先级的消费者且两者都是免费的,则消费消息的第一个消费者是具有更高优先级的消费者.但是为什么它用Queue定义而不是消费者本身?

任务优先级应该是优先级,这对我的需求最重要.它告诉我应该以给定的优先级读取此消息.

因此,看起来最好的优先级将通过将所有优先级与多个worker和并发设置为1的组合来实现,而不是一个具有更高并发性且具有worker_prefetch_multipliertask_acks_late配置的worker .

你怎么看?是对的吗?

python rabbitmq celery

7
推荐指数
1
解决办法
729
查看次数

Composer - 来自一个项目的多个存储库

当我想通过composer安装一些库时,写下就足够了:

composer require vendor/library
Run Code Online (Sandbox Code Playgroud)

和 composer 从 github 下载它。没有必要为 composer.json 提供每个“供应商/库”的 url。作曲家在“内部”做到这一点。但是当我想从例如 bitbucket 添加一些库时,我必须创建这个 composer.json:

{
    "require": {
        "vendor/my-private-repo1": "dev-master",
        "vendor/my-private-repo2": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:vendor/my-private-repo1.git"
        },
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:vendor/my-private-repo2.git"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我必须指定要安装的每个库的 url,即使它们来自同一个项目。有什么办法可以让它变短吗?我可以做这样的事情:

{
    "require": {
        "vendor/my-private-repo1": "dev-master",
        "vendor/my-private-repo2": "dev-master",
        "vendor/my-private-repo3": "dev-master",
        "vendor/my-private-repo4": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:vendor/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我希望我的问题是可以理解的。谢谢你。

php composer-php

6
推荐指数
1
解决办法
6735
查看次数

如何以root身份运行selenium chromedriver?(即使使用 --no-sandbox 也不起作用

我正在尝试运行 chromedriver 来创建一些硒测试。我按照这个手册安装了它。我正在尝试运行这段代码:

from selenium import webdriver
driver = webdriver.Chrome(chrome_options=options)
Run Code Online (Sandbox Code Playgroud)

当我以普通用户身份调用这个 python 脚本时,它正在工作。但是当我将其称为 root 时(这对我来说是必要的),它不起作用。我尝试遵循一些建议,并尝试使用几个 Google Chrome 选项,例如:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--no-sandbox')

driver = webdriver.Chrome(chrome_options=options,
                          service_args=[
                              '--verbose',
                              '--log-path=/home/me/Projects/selenium.log'
                          ]
)
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用,这是日志的一部分:

[1,001][INFO]: COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [ "--no-sandbox" ],
            "extensions": [  ]
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [ "--no-sandbox" ], …
Run Code Online (Sandbox Code Playgroud)

python selenium root

4
推荐指数
1
解决办法
1万
查看次数

QT - 用于不同目的的最佳绘画"画布"

我正在编写我的学士论文申请表,将有三种不同类型的图纸.我需要渲染/绘制/绘制分形结构:

  1. 迭代函数系统(绘制线条或简单路径,复制图形(或部分图形),对副本进行一些转换并迭代绘制)
  2. 逃逸时间算法(遍历画布的每个像素,计算其颜色和颜色像素)
  3. 艾略特波浪样本(通过给定点的路径 - 时间序列图;图形将由许多点制作,它不适合屏幕,所以我需要一些简单的移动控制(两个按钮与点击事件足够好) )

现在,我的问题是,你能推荐一些适合我目的的Qt方法(最简单的方法,如果可能的话)?

我找到了这些:

  1. Qt图形视图框架(我认为,这太"重")
  2. 画入像素图
  3. 继承小部件并覆盖paintEvent(如Qt的基本绘图示例中所示)
  4. Qt Can的Qt Canvas(但我对此一无所知)

我应该选择其中一些选项还是其他什么?
非常感谢,你会非常乐于助人.

c++ graphics qt

3
推荐指数
1
解决办法
1万
查看次数

PHP - 计算两个日期之间的天数 - 不在2013年3月和4月工作

我的PHP函数有问题.它一直工作到现在,当我需要计算2013-03-28和2013-04-01之间的天数(或更精确的夜晚).结果应为4(03/28至03/29,03/29至03/30,03/30至03/31和03/31至04/01)并且我的函数返回3.(当我使用2012-时03-28和2012-04-01而不是2013年的相同日期,它正常工作).你能帮我吗?

function termLength($dateFrom, $dateTo) {
  $dateFrom = (($dateFrom instanceof DateTime) ? $dateFrom : new DateTime($dateFrom));
  $dateTo = (($dateTo instanceof DateTime) ? $dateTo : new DateTime($dateTo));

  $difference = $dateTo->format('U') - $dateFrom->format('U');
  return floor($difference / (60 * 60 * 24));
}

echo termLength('2013-03-28', '2013-04-01');

// output: 3
// it should be: 4
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?谢谢,J.

php date

2
推荐指数
1
解决办法
2362
查看次数

应该在三层系统中放置业务逻辑?

我知道有很多关于我的问题的问题,我已经阅读了很多,但我仍然感觉有点愚蠢,因为我还没有得到它.所以我正在尝试解决我的特殊问题.

我正在实施学校的工作.它应该是信息系统的一部分,必须是分层的.我们必须用Java或C#编写它(我选择了Java).在我的例子中,我们必须使用两个不同的数据源和两个不同的视图,oracle db和xml作为数据源,Java Swing和JSF作为视图.

根据Martin Fowler所着的"企业应用程序架构模式"一书,有三个主要层:

  1. 数据源层:我使用Hibernate ORM生成实体,我创建了数据访问对象,以实现更简单的"接口"来获取数据.
  2. 域层: ...
  3. 表示层:我已经创建了Swing GUI和一些带有MVC逻辑的.xhtml页面

如果系统中没有任何"计算",但只有简单的实现和返回数据,我就完成了,一切都好.但是,我是,例如,实施该系统,应该管理体育舞蹈的比赛,并且在比赛期间我需要为每一轮产生一对情侣,在比赛后我需要计算每个舞者的分数,增量必要时点等等.

我知道,它是Domain层(业务逻辑)的责任,但在我的代码中有哪些?我应该选择这些对象的名称以及将它们放在我的代码结构中的位置?

我的结构:

  • hibernate.cfg.xml(hibernate的配置)
  • hibernate.reveng.xml(hibernate的逆向工程文件)
  • isets.dao(包)
    • isets.dao.hibernate(包)
      • HbmCompetitionDao.java(竞争实体的数据访问对象)
      • ...
    • isets.dao.xml(包)
      • ...(另一个实体的数据访问对象,存储为XML)
  • isets.entities(包)
    • Competition.hbm.xml(生成的实体)
    • Competition.java
    • ...
  • isets.util(包)
    • HibernateUtil.java(获取会话工厂对象的文件)

我应该在哪里放置我的业务逻辑以及这些类的名称应该是什么?

非常感谢您的帮助.再见:-)

java jsf swing hibernate

1
推荐指数
1
解决办法
1344
查看次数

是否可以从C++中在此类中定义的struct内部调用类方法?

我有一个父类,子类,在这个子类中我定义了一些结构.在这个结构中,我想调用父方法.可能吗?

class Parent
{
public:
    int foo(int x);
}

class Child : public Parent
{
public:
    struct ChildStruct {
        int x;

        int bar(int y) {
            return GET_CLASS_CHILD->foo(this->x + y);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

这样的事情在C++中是可能的吗?那怎么实现呢?

c++ struct class

1
推荐指数
1
解决办法
434
查看次数

读取二进制数据 - 查找最小和最大坐标

我有一个二进制数据文件.有超过4百万个LIDAR数据记录.每条记录都存储为四个数字 - 三个浮点数(坐标x,y,z)和一个整数(现在不重要).我应该实现一个在每个轴上获得最小和最大坐标的函数.我编写了下面的代码,算法看起来非常简单和简单,但它不起作用(它将每个最小值返回为0.0f,每个最大值返回1.0f).我有什么不对吗?

void get_min_max(const char *filename, float *a_min_x, float *a_max_x, float *a_min_y, float *a_max_y, float *a_min_z, float *a_max_z) {
  FILE *f = NULL;
  float x, y, z;
  float min_x, min_y, min_z, max_x, max_y, max_z;
  int l_type;

  f = fopen(filename, "rb");

  if (!f) {
    printf("No binary file read!\n");
    exit(-1);
  }

  min_x = min_y = min_z =  std::numeric_limits<float>::max();
  max_x = max_y = max_z = -std::numeric_limits<float>::max();

  while (true) {
    x = fread((void*)(&x), sizeof(x), 1, f);
    y = fread((void*)(&y), sizeof(y), 1, f);
    z …
Run Code Online (Sandbox Code Playgroud)

c++ binaryfiles

0
推荐指数
1
解决办法
61
查看次数

标签 统计

c++ ×3

php ×2

python ×2

binaryfiles ×1

celery ×1

class ×1

composer-php ×1

date ×1

graphics ×1

hibernate ×1

java ×1

jsf ×1

qt ×1

rabbitmq ×1

root ×1

selenium ×1

struct ×1

swing ×1