标签: task

Gradle任务检查是否定义了属性

我有一个执行testng测试套件的gradle任务.我希望能够将标志传递给任务以便使用特殊的testng xml套件文件(或者如果未设置标志,则只使用默认套件).

gradle test
Run Code Online (Sandbox Code Playgroud)

应该运行默认的标准测试套件

gradle test -Pspecial
Run Code Online (Sandbox Code Playgroud)

应该运行特殊的测试套件

我一直在尝试这样的事情:

test {
    if (special) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到一个未定义的属性错误.这是怎样的正确方法?

testng properties task gradle

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

gulp-"cli"代表什么?

有人可以解释一下gulp安装的以下两种方法之间究竟有什么区别:

$ npm install --global gulp-cli
Run Code Online (Sandbox Code Playgroud)

$ sudo npm install -g gulp 
Run Code Online (Sandbox Code Playgroud)

在我看来,两者都做同样的事情,除了第一种方法给我一个版本1.2.1,后来给我版本3.9.1

有人可以简单地说出究竟是什么区别?加上什么是"cli"代表什么?

task runner gulp

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

Task <T> .Convert <TResult>扩展方法是否有用或是否存在隐患?

我正在为Google Cloud API编写客户端库,这些库具有相当常见的异步帮助程序重载模式:

  • 做一些简短的同步工作来设置请求
  • 发出异步请求
  • 以简单的方式转换结果

目前我们正在使用异步方法,但是:

  • 转换await的结果最终会在优先级方面令人讨厌 - 我们最终需要并且(await foo.Bar().ConfigureAwait(false)).TransformToBaz()括号很烦人.使用两个语句可以提高可读性,但这意味着我们不能使用表达式身体方法.
  • 我们偶尔会忘记ConfigureAwait(false)- 这在某种程度上可以通过工具解决,但它仍然有点气味

Task<TResult>.ContinueWith听起来是个好主意,但我读过Stephen Cleary的博客文章推荐反对它,原因看似合理.我们正在考虑Task<T>为此添加扩展方法:

潜在的延伸方法

public static async Task<TResult> Convert<TSource, TResult>(
    this Task<TSource> task, Func<TSource, TResult> projection)
{
    var result = await task.ConfigureAwait(false);
    return projection(result);
}
Run Code Online (Sandbox Code Playgroud)

然后我们可以非常简单地从同步方法中调用它,例如

public async Task<Bar> BarAsync()
{
    var fooRequest = BuildFooRequest();
    return FooAsync(fooRequest).Convert(foo => new Bar(foo));
}
Run Code Online (Sandbox Code Playgroud)

甚至:

public Task<Bar> BarAsync() =>
    FooAsync(BuildFooRequest()).Convert(foo => new Bar(foo));
Run Code Online (Sandbox Code Playgroud)

它看起来如此简单和有用,我有点惊讶没有已经可用的东西.

作为我使用它来使表达式方法工作的一个例子,在Google.Cloud.Translation.V2代码中我有两种方法来翻译纯文本:一个接受一个字符串,一个接受多个字符串.单字符串版本的三个选项是(在参数方面有所简化):

常规异步方法

public async Task<TranslationResult> TranslateTextAsync( …
Run Code Online (Sandbox Code Playgroud)

c# task async-await

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

我如何等待任务在C#中完成?

我想向服务器发送请求并处理返回的值:

private static string Send(int id)
{
    Task<HttpResponseMessage> responseTask = client.GetAsync("aaaaa");
    string result = string.Empty;
    responseTask.ContinueWith(x => result = Print(x));
    responseTask.Wait(); // it doesn't wait for the completion of the response task
    return result;
}

private static string Print(Task<HttpResponseMessage> httpTask)
{
    Task<string> task = httpTask.Result.Content.ReadAsStringAsync();
    string result = string.Empty;
    task.ContinueWith(t =>
    {
        Console.WriteLine("Result: " + t.Result);
        result = t.Result;
    });
    task.Wait();  // it does wait
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我使用Task得当吗?我不这么认为,因为该Send()方法string.Empty每次都Print返回,同时返回正确的值.

我究竟做错了什么?如何从服务器获得正确的结果?

.net c# task wait task-parallel-library

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

等待与异步方法中的Task.Result

执行以下操作之间有什么区别:

async Task<T> method(){
    var r = await dynamodb.GetItemAsync(...)
    return r.Item;
}
Run Code Online (Sandbox Code Playgroud)

VS

async Task<T> method(){
    var task = dynamodb.GetItemAsync(...)
    return task.Result.Item;
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,由于某种原因,只有第二个工作.第一个似乎永远不会结束.

c# asynchronous task async-await amazon-dynamodb

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

AfterPublish目标不起作用

发布我的Web应用程序项目后,世界上最简单的任务(见下文)没有被执行.知道为什么吗?

<Target Name="AfterPublish">
  <Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
Run Code Online (Sandbox Code Playgroud)

msbuild publish task

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

如果在没有完成任务的情况下超时,Task.Wait(int)是否会停止任务?

我有一个任务,我希望它能在一秒钟内运行,但是如果需要的时间超过几秒钟,我想取消任务.

例如:

Task t = new Task(() =>
        {
            while (true)
            {
                Thread.Sleep(500);
            }
        });
t.Start();
t.Wait(3000);
Run Code Online (Sandbox Code Playgroud)

请注意,等待3000毫秒后,等待到期.超时到期或任务是否仍在运行时,任务是否被取消?

.net c# multithreading task task-parallel-library

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

芹菜:如何忽略和弦或链中的任务结果?

我正在使用芹菜,我有几个需要按顺序执行的任务.

例如,我有这个任务:

@celery.task
def tprint(word):
    print word
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

>>> chain(tprint.s('a') | tprint.s('b'))()
Run Code Online (Sandbox Code Playgroud)

然后我明白了TypeError: tprint() takes exactly 1 argument (2 given).

和弦一样,在这种情况下我需要在一组任务后执行任务:

>>> chord([tprint.s('a'), tprint.s('b')])(tprint.s('c'))
Run Code Online (Sandbox Code Playgroud)

那么如何处理这种情况呢?我不关心每项任务的结果,但需要按顺序执行.


添加第二个参数将无法正常工作:

@celery.task
def tprint(word, ignore=None):
    print word

>>> chain(tprint.s('a', 0) | tprint.s('b'))()
Run Code Online (Sandbox Code Playgroud)

这将打印出'a'和'None'.

python asynchronous task celery

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

过滤以显示已过滤的父任务列表的子任务

我有一个JIRA过滤器,可以在将来的版本中返回所有修复:

project = MyProject AND fixVersion = "1.1.1" and issuetype in standardIssueTypes() and status != Closed

所有这些问题都有子任务,我想在新的过滤结果中使用.他们没有fixVersion这套.

我尝试了parent过滤器,但这只接受密钥或ID.

有没有办法我可以编写一个过滤器来访问这些,而无需手动使用类似的东西parent in (MyProject-1,MyProject-2,MyProject-3,MyProject-4,etc)

jira task filter

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

如果发生任何异常,如何使Task.WaitAll()中断?

如果任何正在运行的任务抛出异常,我想让Task.WaitAll()爆发,这样我就不必等待60秒才能完成.我该如何实现这种行为?如果WaitAll()无法实现,那么还有其他c#功能或解决方法吗?

Task task1 = Task.Run(() => throw new InvalidOperationException());
Task task2 = ...
...
try
{
    Task.WaitAll(new Task[]{task1, task2, ...}, TimeSpan.FromSeconds(60));
}
catch (AggregateException)
{
    // If any exception thrown on any of the tasks, break out immediately instead of wait all the way to 60 seconds.
}
Run Code Online (Sandbox Code Playgroud)

c# task task-parallel-library async-await

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