我和芹菜面临着一个非常奇怪的问题:
有一系列任务,其中一个给出异常并进行多次重试
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) 如何使用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)
如何在没有的情况下创建原子入口对象,并输入="*"以使其看起来完全是我想要的?
你能帮我简化代码吗?
谢谢!