标签: long-running-processes

Python - 从Web应用程序启动长时间运行的进程

我有一个python Web应用程序,需要启动一个长时间运行的进程.问题是我不希望它等待整个过程.刚刚发射完成.

我在Windows XP上运行,并且在IIS下运行Web应用程序(如果这很重要).

到目前为止,我尝试过popen,但这似乎不起作用.它一直等到子进程完成.

python windows winapi popen long-running-processes

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

用户如何取消长时间运行的查询?

相关:如何以编程方式取消SQL Server执行过程

我创建了一个应用程序(Windows,WPF),它基本上是数据库(Sql Server)中数据的查看器.该应用程序没有编辑功能.

该应用程序提供了根据用户输入搜索记录的功能.在大多数情况下,行由键列搜索并运行得非常快.但是表中的一列是一个大文本字段,我希望能够根据该字段的内容搜索行.因此,生成的SQL查询可能需要一些时间才能完成.我想提供一个停止按钮,以便用户可以根据需要中止搜索.我在上面放置的链接使用Kill命令来杀死Sql server中的spid,但是我不确定这在我的情况下是如何工作的,因为我使用的是Entity Framework(4.1)

例如,假设有一个类似于此的查询:

var docs = from document in context.Documents
           join header in context.Headers
           on document.DocumentID equals header.HeaderID into headerGroup
           from subdoc in headerGroup.DefaultIfEmpty()
           where document.LargeTextColumn.Contains("search term")
           select (...)

foreach (var item in docs)
{
    //Do something with item here
}
Run Code Online (Sandbox Code Playgroud)

由于查询实际上没有发生,直到我使用foreach语句迭代它,如何为用户提供"停止查询"按钮?这类似于Sql Server Management Studio中的停止按钮.

这可能吗?

c# entity-framework cancel-button sql-server-2008 long-running-processes

6
推荐指数
0
解决办法
4347
查看次数

如何在Node JS中执行/中止长时间运行的任务?

具有Mongo DB的NodeJS服务器 - 一个功能将从数据库生成报告JSON文件,这可能需要一段时间(60秒以上 - 必须处理数十万个条目).

我们希望将其作为后台任务运行.我们需要能够启动报告构建过程,监视它并在用户决定更改params并重新构建它时中止它.

节点最简单的方法是什么?真的不想进入处理作业,消息队列等的单独工作服务器的领域 - 我们需要将它保存在同一个盒子和相当简单的实现上.

1)作为异步方法启动构建,并返回给用户,socket.io报告进度?

2)为构建脚本分离子进程?

3)使用https://www.npmjs.com/package/webworker-threads之类的东西?

通过我看过的几种方法,我陷入了同样的两个方面;

1)如何监控进度?2)如果用户重新提交数据,如何中止现有的构建过程?

任何指针将不胜感激......

multithreading child-process mongodb long-running-processes node.js

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

Winform更新长时间运行的任务

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

我尝试在每一步使用form.refresh(),但是有一些长时间运行的查询,这意味着这不够频繁.

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

c# vsto long-running-processes winforms

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

在用户等待时处理大量数据的最佳实践(在Rails中)?

我有一个bookmarklet,当使用时,将当前浏览器页面上的所有URL提交给Rails 3应用程序进行处理.在幕后我使用Typhoeus来检查每个URL是否返回2XX状态代码.目前,我通过对Rails服务器的AJAX请求启动此过程,只需等待它处理并返回结果.对于一个小集合,这非常快,但是当URL的数量非常大时,用户可以等待,例如10-15秒.

我已经考虑过使用延迟作业来处理用户线程之外的内容,但这似乎不是正确的用例.由于用户需要等到处理完成才能看到结果,并且延迟作业可能需要在作业开始之前最多五秒钟,我不能保证处理将尽快发生.不幸的是,在这种情况下这个等待时间是不可接受的.

理想情况下,我认为应该发生的是:

  • 用户点击bookmarklet
  • 数据被发送到服务器进行处理
  • 在旋转线程进行处理时,会立即返回等待页面
  • 等待页面定期通过ajax轮询处理结果并更新等待页面(例如:"处理的567个URL中的4个...")
  • 等待页面一旦准备好就会更新结果

一些额外的细节:

  • 我正在使用Heroku(长时间运行的进程在30秒后被杀死)
  • 登录和匿名用户都可以使用此功能

这是一种典型的方法,还是有更好的方法?我是否应该在处理过程中滚动自己的线程外处理程序来更新数据库,或者是否可以使用延迟作业(可以在Heroku上使用)?任何推动正确的方向将非常感激.

ruby-on-rails long-running-processes delayed-job ruby-on-rails-3

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

Windows Azure上的长时间运行(或永久性)任务

我需要每隔50秒左右将一些数据写入数据库.它类似于在后台运行并静默执行其工作的Windows服务.在我的情况下,启动和停止不是一个选项,因为我需要将少量先前插入的数据存储在内存中.使用Windows Azure或AWS时,最佳解决方案是什么?

谢谢.

cloud azure background-process long-running-processes amazon-web-services

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

从客户端通过WCF取消长时间运行的任务

我有一个设置为PerCall的WCF服务

我想知道如何从客户端发送一个Start调用以启动一个长时间运行的进程,并发送一个Cancel命令来取消它

我的WCF服务看起来像这样

 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class Service1 : IService1
    {

        CancellationTokenSource cancelToken = new CancellationTokenSource();



        public void Start()
        {

            var compute = Task.Factory.StartNew(StartLongRunningTask, cancelToken.Token);
        }

        public void Stop()
        {

            cancelToken.Cancel();
        }

            private void StartLongRunningTask()
            {
                  //process here

            }

}
Run Code Online (Sandbox Code Playgroud)

我想这里的问题是,每次呼叫到达服务器时,它都被视为新请求.

那么如何在WCF中启动和取消长时间运行的任务呢?

编辑:我将它作为Windows服务托管

.net c# wcf nettcpbinding long-running-processes

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

Android 在应用程序关闭后正确重启服务

我目前正在开发一个电子邮件应用程序,它依赖于背景service以便能够自动获取新电子邮件。当应用程序打开(或在应用程序的运行列表中)时,此功能完美运行,但一旦我关闭应用程序/将其从最近的应用程序列表中删除,它service也会停止。可以通过进入设备上的“开发人员设置”并查看没有为我的应用程序运行的进程或服务来确认这一点。

我在 StackOverflow 上读过无数的帖子,但似乎没有一个能成功。有时onTaskRemoved() 被调用并且服务被重新启动,但其他时候它根本没有被调用或者被调用,日志显示操作系统已安排重新启动,但service随后由操作系统service获取forced closed,而我总是需要运行此服务以检索新电子邮件。

我当前的代码如下所示:

我的服务:

 @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);

        Log.i(TAG, "onStartCommand()");

        ...

        Log.d(TAG, "SERVICE IS RUNNING");

        if (host != null) {
            Log.d(TAG, "STARTING PUSH SERVICE");

            Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    Log.d(TAG, "BR: " + ((BugReporting) getApplication())); …
Run Code Online (Sandbox Code Playgroud)

java service android background-service long-running-processes

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

当我刷出我的应用程序(在其他进程中运行)时,运行在单独进程上的 Android 服务被杀死

我有一个 Android 服务(Servcie 接口的实现),与我的真实应用程序相比,它在单独的进程上运行。不幸的是,当我离开我的真实应用程序(在其中我单击按钮启动我的服务)并从任务管理器中将其刷出时,我的服务也被杀死了。

我知道这里有很多这样的问题,但不知何故,没有人在我的具体星座中针对这个问题,或者他们的回答含糊不清。

所以在我的清单中,我有类似的东西:

<application ...>
    <activity .../>
    <service Android:name="MyService"
        Android:label="MyLabel"
        Android:export="false"
        Android:process=":MyRemoteProcessName" />
</application>
Run Code Online (Sandbox Code Playgroud)

我首先使用了一个 IntentService,但也切换到了自己的服务接口实现(消除了 IntentService 成为故障点),它看起来像:

public class MyService extends Service {

    private ScheduledExecutorService scheduledWorker = Executors.newSingleThreadScheduledExecutor();

    @Override
    public void onStart() {
        // Init components
        startForeground(this, MyNotification);
    }

    @Override
    public int onStartCommand(Intent i, int startId) {
        // Execute Work on Threadpool here
        scheduledWorker.execute(new ScheduledStopRequest(this, startId), 5, TimeUnit.Minutes);
        return START_REDILIVER_INTENT;
    }

    // Overwritten onDestroy-Method

    @Override
    public void onLowMemory() {
        Log.e(LOG_TAG, "On Low Memory called!");
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android long-running-processes android-service foreground-service

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

在新进程中执行 python 代码比在主进程中慢得多

我开始学习multiprocessinginpython并且我注意到在主进程上执行相同的代码比在使用multiprocessing模块创建的进程中执行得快得多。

这是我的代码的简化示例,其中我首先执行代码main process并打印前 10 个计算的时间和总计算的时间。然后执行相同的代码new process(这是一个长时间运行的进程,我可以随时发送new_pattern)。

import multiprocessing
import random
import time


old_patterns = [[random.uniform(-1, 1) for _ in range(0, 10)] for _ in range(0, 2000)]
new_patterns = [[random.uniform(-1, 1) for _ in range(0, 10)] for _ in range(0, 100)]


new_pattern_for_processing = multiprocessing.Array('d', 10)
there_is_new_pattern = multiprocessing.Value('i', 0)
queue = multiprocessing.Queue()


def iterate_and_add(old_patterns, new_pattern):
    for each_pattern in old_patterns:
        sum = 0
        for count in range(0, 10):
            sum += …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing long-running-processes

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