在工作中,我们需要构建一个作业服务器,用于发送电子邮件,构建PDF,处理一些数据等.显然,我们希望建立一些通用的排队系统.我熟悉Gearman,这是它试图解决的确切问题:将工作放在工作人员来接他们的队列中.但是,我看到很多关于Rabbitmq的提及,我不清楚它在这种情况下是如何使用的.
Rabbitmq是构建分布式作业系统的好框架吗?
SQLAlchemy支持在postgresql中创建部分索引.
是否可以通过SQLAlchemy 创建部分唯一索引?
想象一下表/模型如下:
class ScheduledPayment(Base):
invoice_id = Column(Integer)
is_canceled = Column(Boolean, default=False)
Run Code Online (Sandbox Code Playgroud)
我想要一个唯一的索引,其中给定发票只能有一个"活动"的ScheduledPayment.
我可以在postgres中手动创建:
CREATE UNIQUE INDEX only_one_active_invoice on scheduled_payment
(invoice_id, is_canceled) where not is_canceled;
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用SQLAlchemy 0.9将其添加到我的SQLAlchemy模型中.
我有三个QDockWidgets在启动时使用标签QMainWindow.tabifyDockWidget.
在主窗口中,在所有addDockWidget调用之后:
self.tabifyDockWidget(self.dock_widget1, self.dock_widget2)
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3)
Run Code Online (Sandbox Code Playgroud)
基于某些操作,我想选择其中一个选项卡并使其聚焦,或者,如果它还不可见,则选择其他两个选项卡.我已经尝试使用setVisible和setWindowState(Qt.WindowActive),但没有任何变化.
有没有办法以编程方式选择选项卡式停靠窗口小部件并将其带到前面?
我希望能够使用datetime.datetime.now()PyYAML 创建一个datetime对象.调用一些函数很容易:
>>> y = """#YAML
... description: Something
... ts: !!python/object/apply:time.time []"""
>>> yaml.load(y)
{'description': 'Something', 'ts': 1289955567.940973}
>>>
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法弄清楚如何获得一个datetime.now().我已经尝试了使用各种python yaml标签调用那么多的排列.
这些都失败了:
tests = [
'dt: !!python/object:datetime.datetime.now []',
'dt: !!python/object/new:datetime.datetime.now []',
'dt: !!python/object/apply:datetime.datetime.now []',
]
for y in tests:
try:
print yaml.load(y)
except Exception, err:
print '==>', err
Run Code Online (Sandbox Code Playgroud) 我对我的配置应该是什么样的设置主题交换感到困惑.
http://www.rabbitmq.com/tutorials/tutorial-five-python.html
这就是我想要完成的事情:
Task1 -> send to QueueOne and QueueFirehose
Task2 -> sent to QueueTwo and QueueFirehose
Run Code Online (Sandbox Code Playgroud)
然后:
Task1 -> consume from QueueOne
Task2 -> consume from QueueTwo
TaskFirehose -> consume from QueueFirehose
Run Code Online (Sandbox Code Playgroud)
我只希望Task1从QueueOne和Task2使用来从QueueTwo中使用.
现在的问题是,当Task1和2运行时,它们也会耗尽QueueFirehose,而TaskFirehose任务永远不会执行.
我的配置有问题,还是我误解了什么?
CELERY_QUEUES = {
"QueueOne": {
"exchange_type": "topic",
"binding_key": "pipeline.one",
},
"QueueTwo": {
"exchange_type": "topic",
"binding_key": "pipeline.two",
},
"QueueFirehose": {
"exchange_type": "topic",
"binding_key": "pipeline.#",
},
}
CELERY_ROUTES = {
"tasks.task1": {
"queue": 'QueueOne',
"routing_key": 'pipeline.one',
},
"tasks.task2": {
"queue": 'QueueTwo',
"routing_key": 'pipeline.two',
},
"tasks.firehose": { …Run Code Online (Sandbox Code Playgroud) 当前设置正在使用fluentd驱动程序运行 Docker 容器:
docker run --log-driver=fluentd my-container
Run Code Online (Sandbox Code Playgroud)
这很容易工作……将标准输出发送到主机上本地运行的 fluentd 系统。
我想tag使用一些设置在容器上的标签来控制 fluentd 。对于这个例子,假设一些标签(docker inspect片段):
"Config": {
"Labels": {
"com.amazonaws.ecs.container-name": "web",
"com.amazonaws.ecs.task-definition-version": "3"
}
}
Run Code Online (Sandbox Code Playgroud)
如何fluentd tag通过提取一个或多个 来设置Labels?
此列表中的 Docker 文档列出了当前支持的标签:https : //docs.docker.com/engine/admin/logging/log_tags/
这些文档记录了ExtraAttributes……但是我可以弄清楚如何使用它来查找一个或多个标签。阅读 Docker 代码我不清楚:https : //github.com/docker/docker/blob/master/daemon/logger/context.go#L29
这与docker inspect以下内容无关:
docker inspect --format '{{index .ContainerLabels "com.amazonaws.ecs.container-name"}}'
Run Code Online (Sandbox Code Playgroud)
我想提取相同的信息并将其输入 log-opt tag=?
这一直困扰着我,我从来没有真正想出过自己喜欢的方法.
从django项目中的某个应用程序导入内容时,是否导入:
from myproject.mymodule.model import SomeModel
from myproject.anotherone.model import AnotherModel
Run Code Online (Sandbox Code Playgroud)
或者,你做到了:
from mymodule.model imoprt SomeModel
from anotherone.model import AnotherModel
Run Code Online (Sandbox Code Playgroud)
当然,只要PYTHONPATH在部署时正确设置,任何一个都可以工作.即使是给定项目中两者的组合也可行.
第二种形式的问题是当你有一个utils.py或类似的东西坐在你的项目中.
# This feels wrong
import utils
Run Code Online (Sandbox Code Playgroud)
但是,那可能只是我.
哪一个更好,为什么?