草庐IT

max_task

全部标签

python - Celery & RabbitMQ 作为 docker 容器运行 : Received unregistered task of type '...'

我对docker、celery和rabbitMQ比较陌生。在我们的项目中,我们目前有以下设置:1个运行多个docker容器的物理主机:1xrabbitmq:3-管理容器#pullimagefromdockerhubandinstalldockerpullrabbitmq:3-management#rundockerimagedockerrun-d-eRABBITMQ_NODENAME=my-rabbit--namesome-rabbit-p8080:15672-p5672:5672rabbitmq:3-management1xcelery容器#pulldockerimagefromdo

c# - 立即返回 Task<bool>

我有一个任务列表,我想等待。我在等着awaitTaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());MyViewModel.GetListOfTasks()返回任务列表:vartasksList=newList();foreach(variteminItems){tasksList.Add(item.MyTask());}现在,我想返回将立即完成的虚拟任务。但是,TaskEx.WhenAll会永远等待它:publicTaskMyTask(){returnnewTask(()=>false);}如何返回立即完成的任务?

c# - 如果超时没有完成任务,Task.Wait(int) 是否会停止任务?

我有一个任务,我希望它能在一秒钟内运行,但如果它花费的时间超过几秒钟,我想取消该任务。例如:Taskt=newTask(()=>{while(true){Thread.Sleep(500);}});t.Start();t.Wait(3000);请注意,等待3000毫秒后到期。超时过后任务是否被取消或任务是否仍在运行? 最佳答案 Task.Wait()等待任务完成到指定时间段,并返回任务是否在指定时间(或更早)内完成。任务本身不被修改,也不依赖于等待。阅读精彩系列:Parallelismin.NET,Parallelismin.NET

c# - 如果序列为空,如何使 LINQ 的 Max 函数返回默认值?

我有这个代码:ListmyList=newList();varmax=myList.Max();Console.Write(max);我希望确保如果列表中没有元素,它应该使用int(0)的默认值。而是抛出InvalidOperationException,指出“序列不包含任何元素”。当然我可以使用Any或查询语法(如here)。但我想使用流畅的语法来完成。我该如何解决这个问题? 最佳答案 试试这个:varmyList=newList();varmax=myList.DefaultIfEmpty().Max();Console.Wri

c# - 使用 Min 或 Max 时如何处理 LINQ 中的空值?

我有以下Linq查询:result.Partials.Where(o=>o.IsPositive).Min(o=>o.Result)当result.Partials.Where(o=>o.IsPositive)不包含元素时出现异常。除了将操作一分为二并检查是否为null之外,是否有一种优雅的方法来处理此问题?我有一个类充满了像这样的操作。编辑:问题与LINQtoObjects有关。这是我得到的异常(翻译为:序列为空): 最佳答案 Min计算的简短总结-无中介(异常(exception)!)varmin=result.Partials

c# - 如何获得 System.Threading.Tasks.Task 已完成的通知

我目前正在使用.net4中新的System.Threading.Tasks功能用新的实现替换一些自制任务功能。虽然我有一个小问题,虽然我可以想到一些解决方案,但我希望得到一些建议,以了解通常最好的方法,以及我是否在某处遗漏了技巧。我需要的是任意进程能够启动任务但随后继续执行而不是等待任务完成。没问题,但是当我需要对任务的结果做某事时,我不太确定最好的方法。我见过的所有示例都在任务上使用Wait()直到它完成或引用任务上的Result参数。这两个都会阻塞启动任务的线程,这是我不想要的。我想到的一些解决方案:创建一个新线程并在其上启动任务,然后使用Wait()或.Result阻塞新线程并以

c# - Task.Factory.StartNew 与 Parallel.Invoke

在我的应用程序中,我并行执行了几十到几百个操作(这些操作没有返回值)。哪种方法是最佳的:在foreach循环中使用Task.Factory.StartNew迭代Action数组(Action[])Task.Factory.StartNew(()=>someAction());使用Parallel类,其中actions是Action数组(Action[])Parallel.Invoke(actions);这两种方法是否等效?对性能有影响吗?编辑我已经执行了一些性能测试,在我的机器上(每个2个CPU2个内核)结果似乎非常相似。我不确定它在1个CPU等其他机器上会是什么样子。我也不确定(不知

c# - 为什么 Thread.CurrentPrincipal 需要 "await Task.Yield()"才能正确流动?

以下代码已添加到新创建的VisualStudio2012.NET4.5WebAPI项目中。我正在尝试同时分配HttpContext.Current.User和Thread.CurrentPrincipal在异步方法中。Thread.CurrentPrincipal的赋值除非awaitTask.Yield();否则流程不正确(或任何其他异步)被执行(将true传递给AuthenticateAsync()将导致成功)。这是为什么?usingSystem.Security.Principal;usingSystem.Threading.Tasks;usingSystem.Web.Http;n

c# - 当 Action 重载可用时,为异步 lambda 函数显式使用 Func<Task>

阅读this关于C#5的异步/等待的一些陷阱的博客文章。它在Gotcha#4中提到了一些非常深刻的东西,这是我以前没有想到的。简而言之,它涵盖了这样一种情况:您有一个方法有两个重载,一个接受Action。一个需要Func(例如Task.Run)。这个问题的根源在于asyncvoid方法应该只用于事件处理程序,然后帖子继续描述以下场景-当像下面这样的lambda函数可以编译为Func时,编译器会推断出什么?和一个Action:Task.Run(async()=>{awaitTask.Delay(1000);});因为Task.Run有两个Task.Run(Func)的签名和Task.Ru

c# - 如何实现返回 Task<T> 的接口(interface)方法?

我有一个界面interfaceIFoo{TaskCreateBarAsync();}创建Bar的方法有两种,一个异步和一个同步。我想为这两种方法中的每一种提供一个接口(interface)实现。对于异步方法,实现可能是这样的:classFoo1:IFoo{asyncTaskCreateBarAsync(){returnawaitAsynchronousBarCreatorAsync();}}但是我应该如何实现类Foo2使用同步方法创建Bar?我可以实现同步运行的方法:asyncTaskCreateBarAsync(){returnSynchronousBarCreator();}然后编