问题标签 [long-running-processes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5364 浏览

c# - Winform 更新长时间运行的任务

当应用程序执行长时间运行的任务时,您是否有一个很好的解决方案来保持“请稍候”winform“绘制”?

我已经尝试在每个步骤中使用 form.refresh() ,但是会发生一些长时间运行的查询,这意味着这不够频繁。

基本上这个SO Question但是,通过 VSTO(而不是 Python)在 Excel 中的 C# 上。

0 投票
3 回答
1152 浏览

django - django中长期运行进程的全局状态

我需要启动一个长时间运行的进程来响应 django 中的表单提交。然后,我希望能够使用 ajax 进行轮询并让视图响应进程的状态(启动、停止或运行)。此外,我希望能够停止该过程。

所以我的观点是这样的:

这个特殊问题已在 SO 上多次解决,但我的情况略有不同: 我正在寻找一个完全是 pythonic 的解决方案,不需要任何在 django 中找不到的东西,也不需要使用数据库。

我发现的最接近的是这篇文章。我已经实现了代码,并对其进行了相当多的简化,但事实证明 request.session 不是全局的(两个浏览器有不同的会话)。

可能是我的问题可以通过使用 request.session 以外的东西来保存启动/停止/状态状态来解决,但我不知道那会是什么。

我在阅读中遇到的另一种可能性是 django 中间件,但据此

__init__() 只被调用一次——在服务器启动时——而不是针对单个请求

这里还有一篇博客文章讨论了 django 中的全局状态。有什么想法吗?

0 投票
4 回答
1924 浏览

asp.net - 一种从 ASP.NET 页面运行长进程的方法

您在 asp.net 中运行长流程(例如 2 小时)并将进度信息返回给客户端的最成功方法是什么。

听说创建windows服务,httphandler和remoting都可以成功。

0 投票
3 回答
239 浏览

wpf - Should I run everything in a background thread?

I am designing an application which has the potential to hang while waiting for data from servers (either Database or internet) the problem is that I don't know how best to cope with the multitude of different places things may take time.

I am happy to display a 'loading' dialog to the user while access is happening but ideally I don't want this to flick up and disappear for short running operations.

Microsoft word appears to handle this quite nicely, as if you click a button and the operation takes a long time, after a few seconds you get a 'working..' dialog. The operation is still synchronous and you can't interrupt the operation. However if the same operation happens quickly you obviously don't get the dialog.

I am happy(ish) to devise some generic background worker thread handler and 99% of my data processing is already done in static atomic methods, but I would like to go best practice on this one if I can.

If anyone has patterns, code or suggestions I welcome them all

Cheers

0 投票
5 回答
1328 浏览

c# - Processing long-running operations from a windows service

Edit (again): Let me simplify my problem. I have a Windows Service that exposes some WCF endpoints with methods like:

What is the best way to implement the ExecuteQuery method? Should I just call ThreadPool.QueueUserWorkItem to get my query going?

Note that the actual work behind executing a query is done by load-balanced black box. I want to be able to have several queries going at the same time.

The analogy is a web browser that is downloading multiple files simultaneously and you have a download manager that can track the status of each file.

0 投票
3 回答
675 浏览

asp.net - 使用 Javascript 进行长进程的进度更新

我有一个调用 dll 的 asp.net 页面,该 dll 将启动一个更新产品信息的漫长过程。随着流程的运行,我想向用户提供有关该流程所在的产品以及产品状态的持续更新。我一直无法让这个工作。我将信息添加到日志文本文件中,我想我会重定向到一个新页面,并让该页面每隔几秒钟使用 Javascript 从文本文件中读取一次。我的问题是有没有其他人尝试过这个并且它工作得相当好?

0 投票
4 回答
2745 浏览

c# - wpf窗口刷新首先工作,然后停止

我有一个例程,它获取目录中所有图像的列表,然后对所有图像运行 MD5 摘要。由于这需要一段时间,我会弹出一个带有进度条的窗口。进度条由我传递给长时间运行的例程的 lambda 更新。

第一个问题是进度窗口从未更新(我猜这在 WPF 中是正常的)。由于 WPF 缺少Refresh()命令,因此我通过调用Dispatcher.Invoke(). 现在进度条更新了一段时间,然后窗口停止更新。长期运行的工作最终完成,窗户恢复正常。

我已经尝试过 BackgroundWorker,但很快就对与长时间运行的进程触发的事件相关的线程问题感到沮丧。所以如果这真的是最好的解决方案,我只需要更好地学习范式,请这样说。

但是我对这里的方法真的很满意,除了它会在一段时间后停止更新(例如,在一个有 1000 个文件的文件夹中,它可能会更新 50-100 个文件,然后“挂起”) . UI 在此活动期间不需要响应,除了报告进度。

无论如何,这是代码。首先是进度窗口本身:

长时间运行的方法(在 Gallery.cs 中):

因此被称为:

0 投票
4 回答
5251 浏览

asp.net - 长时间运行的 ASP.NET 任务

我知道有很多 API 可以做到这一点,但我也知道托管环境(即 ASP.NET)限制了您可以在单独的线程中可靠地执行的操作。

我可能完全错了,所以如果我是,请纠正我,但这就是我认为我知道的。

  • 一个请求通常会在 120 秒后超时(这是可配置的),但最终 ASP.NET 运行时会终止一个需要很长时间才能完成的请求。
  • 托管环境(通常是 IIS)采用进程回收,并且可以随时决定回收您的应用程序。当这种情况发生时,所有线程都被中止并且应用程序重新启动。但是我不确定它有多激进,假设它会中止正常的正在进行的 HTTP 请求会有点愚蠢,但我希望它会中止一个线程,因为它对工作单元一无所知一个线程。

如果您必须创建一个编程模型,该模型可以轻松可靠地在理论上放置一个长时间运行的任务,并且必须运行数天,您将如何在 ASP.NET 应用程序中完成此任务?

以下是我对这个问题的看法:

我一直在考虑在 win32 服务中托管 WCF 服务。并通过 WCF 与服务对话。然而,这不是很实用,因为我选择这样做的唯一原因是从几个不同的 Web 应用程序发送任务(工作单元)。然后,我最终会要求服务提供状态更新并采取相应的行动。我对此最大的担忧是,如果我必须将每个任务部署到服务以使其能够执行一些指令,那将不是一个特别好的体验。还有这个输入问题,如果我有一个大数据集并且需要仔细研究它,我将如何为这个服务提供数据?

我现在通常做的是这个

它允许我将 SQL Server 数据库用作工作队列,并使用此查询定期轮询数据库以进行工作。如果工作项目成功完成,我将其标记为已完成并继续进行,直到没有更多事情可做。我不喜欢的是理论上我可以在任何时候被打断,如果我介于成功和将其标记为完成之间,我最终可能会处理两次相同的工作项目。我可能有点偏执,这可能一切都很好,但据我所知,不能保证不会发生这种情况......

我知道以前在 SO 上也有过类似的问题,但没有给出明确的答案。这是很常见的事情,但 ASP.NET 托管环境无法处理长时间运行的工作。

请分享你的想法。

0 投票
3 回答
362 浏览

java - 长期运行的统计过程 - 关于语言选择的想法?

我在我正在管理的网站的LAMP堆栈上。需要汇总使用情况统计信息(与我们的桌面产品相关的各种事物)。

我最初用 PHP 解决了这个问题(因为我已经有一堆类来处理数据)。在我使用 5.3 的开发盒上一切正常。

长话短说,5.1 的内存管理似乎更糟了,我不得不做很多傻事才能让长期汇总脚本在固定的内存空间中运行。我们的服务器人员此时不愿意升级 PHP。我已经将我的开发服务器移回 5.1,所以我不会再遇到这个问题。

为了挖掘 MySQL 数据库以汇总不同时期和分辨率的统计信息,可能会运行一个在未来一直执行此操作的进程(而不是按 cron 计划),您推荐哪种语言选择?我正在研究 Python(我或多或少地了解它)、Java(不太了解),或者使用 PHP(非常了解)。


编辑:评论者的设计说明

分辨率:汇总脚本目前的工作方式是我有一些用于定义分辨率和存储桶的类。我有年、月、周、日——给定一个“桶号”,每个类都给出一个定义该桶的时间范围的开始和结束时间戳——这是基于任意纪元日期。系统维护“完整”记录,即,它将完成自上次运行以来的每个分辨率的汇总数据集,目前。

SQL Strat:基本统计信息位于许多不同的模式和表中。大多数情况下,我对每个汇总的统计信息进行单独查询,然后填写一条记录以进行插入。您建议嵌套子查询,例如:

插入rolled_up_stats (someval, someval, someval, ...) VALUES (SELECT SUM(somestat) from someschema, SELECT AVG(somestat2) from someschema2)

那些子查询会生成临时表,对吧?我的经验是,这在过去就像糖蜜一样缓慢。这是更好的方法吗?

编辑 2:为问题添加一些内联响应

语言是 5.1 php 的瓶颈——我基本上被告知我选择了错误的语言(尽管脚本在 5.3 上运行良好)。你提到了python,我正在检查这个任务。明确地说,我正在做的是为桌面产品的使用情况统计提供一个管理工具(日志实际上是由 EJB 服务器写入 mysql 表的)。我做 apache 日志文件分析,以及更多的 web 端自定义 web 报告,但是这个项目是独立的。到目前为止,我采用的方法是聚合表。我不确定这些消息队列产品能为我做什么,我来看看。

更进一步——这些数据被用于绘制服务和客户级别的活动图表,以便管理层了解产品的使用情况。您可以选择一个时间段(4 月 1 日至 4 月 10 日),并根据所选时间段以不同的粒度(小时、天、月等)检索某个功能的总使用分钟数图表。它本质上是对使用情况的事后分析。然而,需求似乎倾向于实时(查看最后一小时的使用情况)

0 投票
5 回答
477 浏览

php - 长进程php

我需要运行一个非常长的 php 脚本(四个半小时,五个小时)。

该脚本有时会成功运行,但有时会莫名其妙地被杀死(可能与共享主机有关??)。

我认为运行脚本的解决方案可能是更小的块。

为了做到这一点,我编写了一个脚本,将它的状态和位置存储在一个 xml 文件中,并在移动位置之前执行脚本的一部分。

我在连接脚本的最后一位时遇到问题,这应该结束当前进程并重新执行脚本。

或者我可能完全是在叫错树!

我已经阅读了我在 SO 和其他地方可以找到的内容,但我仍然没有更聪明:(

请帮忙!!!