小编Ale*_*erg的帖子

如果它的子任务给出异常,如何使链失败

我和芹菜面临着一个非常奇怪的问题:

有一系列任务,其中一个给出异常并进行多次重试

chain = (err.si(1) | err.si(2))
result = chain.apply_async()
result.state
result.get()
Run Code Online (Sandbox Code Playgroud)

这是任务的代码:

@celery.task(base=MyTask)
def err(x):
try:
    if x < 3:
        raise Exception
    else:
        return x+1

except Exception as exp:
    print "retrying"
    raise err.retry(args=[x],exc=exp,countdown=5,max_retries=3)
Run Code Online (Sandbox Code Playgroud)

问题是虽然链中的任务给出了异常,但result.state仍然是'PENDING'而.get()只是冻结.

我试图在任务达到最大重试次数值时失败:

class MyTask(celery.Task):
abstract = True
def after_return(self, status, retval, task_id, args, kwargs, einfo):
    if self.max_retries == self.request.retries:
        self.state = states.FAILURE
Run Code Online (Sandbox Code Playgroud)

但是虽然单独执行任务被标记为FAILED,但在链中执行会产生相同的结果 - PENDING&Freezed得到.

我预计,一旦任何任务的任务失败,链就会失败.结果的结果应该产生从任务抛出的异常.

_ UPDATE _ 由apply_async给出的堆栈跟踪,ALWAYS_EAGER = True

result = chain.apply_async()

Exception                                 
Traceback (most recent call last)
<ipython-input-4-81202b369b5f> in <module>()
----> 1 …
Run Code Online (Sandbox Code Playgroud)

python django rabbitmq celery

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

使用C#进行Atom入口

如何使用C#和.NET 4创建Atom条目?

我需要使用这种结构创建一个条目:

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:f="XXX:aaa">
  <title>title1</title>
  <summary>summary1</summary>
</entry>
Run Code Online (Sandbox Code Playgroud)

我尝试使用SyndicationItem类执行此操作,但条目包含的信息超出了我的需要:

SyndicationItem atom = new SyndicationItem();
atom.Title = new TextSyndicationContent("test1", TextSyndicationContentKind.Plaintext);

atom.Summary = new TextSyndicationContent("summary1");
atom.AttributeExtensions.Add(new XmlQualifiedName("f", "http://www.w3.org/2000/xmlns/"), "XXX:aaa");


XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "  ";
settings.NewLineOnAttributes = true;
StringBuilder sb = new StringBuilder();
XmlWriter xml = XmlWriter.Create(sb,settings);
atom.SaveAsAtom10(xml);
xml.Close();
Console.WriteLine(sb.ToString());
Run Code Online (Sandbox Code Playgroud)

结果是:

<entry xmlns:f="XXX:aaa" xmlns="http://www.w3.org/2005/Atom">
  <id>uuid:34381971-9feb-4444-9e6a-3fbc412ac6d2;id=1</id>
  <title type="text">title1</title> 
  <summary type="text">summary1</summary>
   <updated>2010-10-29T14:02:48Z</updated>
</entry>
Run Code Online (Sandbox Code Playgroud)

如何在没有的情况下创建原子入口对象,并输入="*"以使其看起来完全是我想要的?

你能帮我简化代码吗?

谢谢!

.net c# syndication-item atompub atom-feed

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

标签 统计

.net ×1

atom-feed ×1

atompub ×1

c# ×1

celery ×1

django ×1

python ×1

rabbitmq ×1

syndication-item ×1