小编Kev*_*yer的帖子

重新启动单个Git提交

有没有办法将一个提交从一个分支重新绑定到另一个分支?

我有这个分支结构:

-- -- -- -- -- (Master)
            \
              -- -- -- -- -- XX (Feature-branch)
Run Code Online (Sandbox Code Playgroud)

我想要做的就是将最后一次提交改为Feature-branchmaster并回滚Feature-branch一次提交.

-- -- -- -- -- XX (Master)
            \
              -- -- -- -- -- (Feature-branch)
Run Code Online (Sandbox Code Playgroud)

我怎么做?

git rebase

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

为什么Celery不会在底层任务抛出异常时抛出异常

Celery似乎没有正确处理异常.

如果我有任务:

def errorTest():
    raise Exception()
Run Code Online (Sandbox Code Playgroud)

然后我打电话

r = errorTest.delay()
In [8]: r.result

In [9]: r.state
Out[9]: 'PENDING'
Run Code Online (Sandbox Code Playgroud)

它会无限期地挂起来.

去检查日志显示错误被抛出任务(如果你想要消息,请问),我知道后端和一切都设置正确,因为其他任务正常工作并正确返回结果.

在Celery中捕捉异常需要做些什么时髦吗?

/ Celery版本是3.0.13,经纪人是RabbitMQ在我的本地机器上运行

python exception-handling celery

31
推荐指数
2
解决办法
2万
查看次数

是否可以将代码从一个AWS Lambda函数复制到另一个而不先下载它?

所以我目前正在为AWS Lambda函数构建部署程序.

由于AWS版本都共享一个配置,因此需要具有多个函数(foo_prod,foo_staging,foo_whatever),这些函数是我们代码的各种版本,而不是像我想要的那样使用别名.

所以我的问题是:

1)是否有一种理智的方式来重新部署代码.(IE:Staging to Prod)不先将其下载到我的桌​​面,然后重新上传.

2)我对该共享配置位是否错误,或者是否可以告诉该函数在实际Lambda中运行哪个别名,以便我可以为每个环境创建多个环境变量.

python amazon-web-services aws-lambda

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

Python芹菜任务重启芹菜工人

在celery中,是否有一种简单的方法可以创建一系列(可用于)自动重启工作者的任务?

目标是让我的部署在每次从github获取新源时自动重启所有子芹菜工作者.因此,我可以向该机器上的管理celery实例发送一个restartWorkers()任务,该实例将杀死(实际上是等待)该机器上的所有芹菜工作进程,并使用新模块重新启动它们.

该计划适用于每台机器:

  • 管理节点[队列:管理,特定于机器] - 负责管理机器上的其余工作人员,根据需要启动新节点并终止旧节点
  • 工作节点[队列:特定于git版本,特定于工作人员,特定于机器] - 实际上负责工作.

看起来我需要的代码是在dist_packages/celery/bin/celeryd_multi.py中的某个地方,但是对于启动工作者来说,源代码是相当不透明的,我无法分辨它应该如何工作或它实际启动节点的位置.(看起来shutdown_nodes是正在调用以杀死进程的正确代码,我正在慢慢调试我的方法来弄清楚我的参数应该是什么)

是否有函数/函数restart_nodes(self,nodes)我可以调用某个地方,或者我将从python中运行shell脚本?

/另外,是否有更简单的方法将源重新加载到Python而不是杀死并重新启动进程?如果我知道重新加载模块实际上有效(实验说它没有.在重新启动过程之前,函数的更改不会渗透),我只是这样做,而不是管理节点的间接.

编辑:我现在可以关闭,感谢广播(谢谢你,迈克尔.如果我有更多的代表,我会upvote).有什么方法可以播放重启?有pool_restart,但这不会杀死节点,这意味着它不会更新源.

我一直在研究celery.bin.celeryd:WorkerCommand().run()中的一些幕后资源,但是在运行调用之前和之后都有一些奇怪的事情发生,所以我不能只调用它功能和完成因为它崩溃了.从python脚本调用shell命令来运行另一个python脚本是有道理的,我无法相信我是第一个想要这样做的人.

python celery celeryd

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

在Chef中,为什么提出的异常没有获救?

在Chef中,为什么这段代码没有捕获bash资源中抛出的异常?如果我运行此代码,即使抛出异常,我也永远不会访问python资源.错误是预期的,这就是为什么我抓住它,然后转向pymongo并以这种方式修复它.

begin
    bash "mongo fix" do
        code "mongo --verbose #{filename}"
        action :run

    end
rescue
    python 'pymongo reconfig'  do
        code "Pymongo does a catch and reconfig"
    end

end
Run Code Online (Sandbox Code Playgroud)

这是异常输出

[2013-03-05T20:03:55+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: bash[mongo fix (noudata::mongo line 77) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '253'
---- Begin output of "bash"  "/tmp/chef-script20130305-3916-14xxhn5-0" ----
STDOUT: MongoDB shell version: 2.2.3
Tue Mar  5 20:03:55 versionCmpTest passed
Tue Mar  5 20:03:55 versionArrayTest passed
connecting to: test
Tue Mar  5 20:03:55 …
Run Code Online (Sandbox Code Playgroud)

ruby mongodb chef-infra

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

如何修复这个rabbitmq/celery 错误?

所以我在具有集群rabbitmq后端的多台服务器上运行celery。最近,我对 celery 所做的任何事情都开始无限期地挂起,检查rabbitmq 的日志为我提供了这个模糊的错误消息:

=ERROR REPORT==== 20-Mar-2013::23:52:25 ===
connection <0.15823.3>, channel 1 - soft error:
{amqp_error,not_found,
        "no binding i-69995906 between exchange 'i-69995906' in vhost 'celery' and queue 'i-69995906' in vhost 'celery'",
        'queue.bind'}
Run Code Online (Sandbox Code Playgroud)

运行 rabbitmqctl list_bindings 给了我这个:

# rabbitmqctl list_bindings -p celery
Listing bindings ...
        exchange    celery  queue   celery  []
celery  exchange    celery  queue   celery  []
...done.
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能摆脱错误?我已经重新启动了Rabbitmq,重新安装了Rabbitmq,并删除并恢复了集群。我猜我需要恢复先前存在的绑定,但我不知道如何从 rabbitmqctl 或 celery 恢复。如果这不起作用,我的芹菜任务根本不起作用。

rabbitmq celery

3
推荐指数
2
解决办法
5291
查看次数