标签: background-process

R控制台可以支持后台任务或中断(事件处理)吗?

在R控制台中工作时,我想设置监视特定连接的后台任务,当事件发生时,执行另一个功能(警报).或者,我可以进行设置,以便外部函数只是向R发送警报,但这似乎是同样的问题:有必要设置一个监听器.

我可以在R的专用过程中执行此操作,但我不知道在控制台中是否可行.另外,如果它正在计算一个函数,我对中断R不感兴趣,但是如果控制台只是在等待输入,则警告或中断.

以下是三个用例:

  1. 最简单的例子是观看文件.假设我有一个名为"latestData.csv"的文件,我想监视它的变化; 当它改变时,myAlert()执行.(可以将它扩展为执行不同的操作,但只是弹出一个文件已更改的注释是有用的.)

  2. 一种不同类型的监视器将监视给定的机器是否在RAM上运行不足并且可能执行save.image()并终止.同样,这可能是一个简单的问题,即观察由外部监视器生成的文件,该文件可以保存输出top或其他命令.

  3. 一个不同的例子就像另一个最近的SO问题,关于:让R停止正在运行的EC2机器.如果来自另一台机器或进程的警报告诉程序保存并终止,那么能够监听该警报将是很好的.

目前,我怀疑有两种方法可以解决这个问题:通过Rserve和可能的via fork.如果有人有关于如何使用包或通过其他方法执行此操作的示例,那将是很好的.我认为解决这三个用例中的任何一个都可以解决所有这些问题,模拟一些外部代码.


注1:我意识到,根据另一个SO问题的答案,R是单线程的,这就是我怀疑fork和Rserve可能工作的原因.但是,如果一个人与R终端接口,我不确定可行性.虽然R的REPL附加到控制台的输入,但我试图绕过它或模仿它,这是答案的地方forkRserve可能.

注2:对于那些熟悉事件处理/事件处理方法的人来说,这也可以解决所有问题.我在R中找不到任何相关内容.


更新1:我发现编写R扩展的手册有一个引用事件处理的部分,其中提到了使用R_PolledEvents.这很有希望.

r interrupt event-handling background-process

8
推荐指数
2
解决办法
2433
查看次数

beginBackgroundTaskWithExpirationHandler永远不会被调用

我有一个在后台播放音频的应用程序.我正试图beginBackgroundTaskWithExpirationHandler在当前曲目结束时跳到下一首曲目.

以下是播放状态更改时调用的代码.它永远不会记录"beginBG called",即使同一方法中的其他代码在后台成功实现.

UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [self ffwButtonPressed:ffwButton];
    NSLog(@"beginBG called");
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];
Run Code Online (Sandbox Code Playgroud)

ffwButtonPressed调用一些不同的方法来改变轨道.什么时候完成......

UIApplication *app = [UIApplication sharedApplication];
    if (bgTask != UIBackgroundTaskInvalid) {
        [app endBackgroundTask:bgTask]; 
        bgTask = UIBackgroundTaskInvalid;
        NSLog(@"end bgTask");
Run Code Online (Sandbox Code Playgroud)

编辑:声明

UIBackgroundTaskIdentifier bgTask;
Run Code Online (Sandbox Code Playgroud)

编辑:在ViewDidLoad中

bgTask = 0;
Run Code Online (Sandbox Code Playgroud)

iphone objective-c background-process uiapplication ios

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

背景工作者在轨道app观看通信

让我们说我有一个博客应用程序与帖子.创建帖子后,将创建一个工作程序来处理某些后台操作.我的情况是,在提交帖子表单后,我想显示某种加载消息(gif加载器等),当工作人员完成时,我想隐藏加载消息并显示工作人员提供的一些数据.我的问题是,工人完成工作并将其显示在用户前端的最佳沟通方式是什么.工人回调看起来像这样

def worker_finish
  #message the user
end
Run Code Online (Sandbox Code Playgroud)

ruby views background-process resque

8
推荐指数
1
解决办法
1447
查看次数

应用程序在iOS上输入后台时继续操作

在我的应用程序中我有一些NSOperation从在线数据库更新一些核心数据元素,有时更新需要一些时间,当iPhone的屏幕锁定时,应用程序进入后台模式,此更新停止,所以我有重新打开应用程序继续更新,所以我搜索了很多堆栈溢出,我找到了一些信息:

beginBackgroundTaskWithExpirationHandler
Run Code Online (Sandbox Code Playgroud)

这是一个来自苹果的方法,当应用程序处于后台模式时,让我们继续执行某项任务,并且我这样做:

- (void)applicationDidEnterBackground:(UIApplication *)application
{

UIApplication  *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier bgTask;

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
}];
}
Run Code Online (Sandbox Code Playgroud)

现在应用程序在后台继续执行任务,似乎一切正常,所以我的问题是,我使用的这种方法是安全的吗?还是有更好的模式?

谢谢

background-process nsoperation ios

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

Firebase可以在iOS 7的后台发送和接收吗?

我在iOS 7上的Objective C应用程序在后台从startUpdatingsignificantLocationChanges或startUpdatingLocation委托获取位置更新(哪一个取决于应用程序所处的模式,但我认为不重要).

在委托中,我收集位置信息,将其写入字典,然后将字典写入Firebase.

// this code is in the location update delegate routine

// the code that gathers the various elements that go into the dictionary
// are omitted for clarity, I don't think that they matter

// we may be running in the background on iOS 7 when we are called!

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
   [[NSNumber numberWithFloat:newLocation.coordinate.latitude] stringValue], @"Latitude",
   [[NSNumber numberWithFloat:newLocation.coordinate.longitude] stringValue], @"Longitude",
   [[NSNumber numberWithFloat:newLocation.horizontalAccuracy] stringValue], @"Accuracy",
   formattedDateString, @"TimeNow",
   [dateFormatter stringFromDate:newLocation.timestamp], @"TimeStamp",
   [[NSNumber numberWithDouble:interval] stringValue], @"Date",
   self.mode, …
Run Code Online (Sandbox Code Playgroud)

objective-c background-process ios firebase ios7

8
推荐指数
1
解决办法
851
查看次数

HealthKit数据在后台无法访问

我想使用后台提取在后台提取HealthStore数据,但我一直收到错误:Error Domain=com.apple.healthkit Code=6 "Protected health data is inaccessible" UserInfo=0x17026fdc0 {NSLocalizedDescription=Protected health data is inaccessible}.

Apple声明:

由于HealthKit存储已加密,因此当手机锁定时,您的应用无法从商店读取数据.这意味着您的应用可能无法在后台启动时访问该商店.

在后台访问数据的任何解决方法?是HKObserverQuery在后台获取数据的唯一方法吗?

background-process ios healthkit hkhealthstore

8
推荐指数
1
解决办法
2580
查看次数

如何防止Hangfire重复作业在连续执行30分钟后重新启动

我正在使用asp.net mvc-5 Web应用程序,我在使用Hangfire工具运行长时间运行的后台作业时遇到了问题.问题是如果作业执行超过30分钟,那么hangfire会自动启动另一个作业,所以我最终会同时运行两个类似的作业.

现在我有以下内容: -

  1. Asp.net mvc-5
  2. IIS-8
  3. Hangfire 1.4.6
  4. Windows服务器2012

现在我已经定义了一个每天17:00运行的篝火重复工作.后台作业主要扫描我们的网络中的服务器和虚拟机并更新数据库,定期作业将在完成执行后发送电子邮件.经常性工作在执行时间不到30分钟时效果很好.但是今天随着我们的系统的发展,经常性的工作在40分钟后完成,而不是像过去那样在22-25分钟之后完成.我收到了2封电子邮件,而不是一封电子邮件(电子邮件之间的时间约为30分钟).现在我手动重新运行这个工作,我注意到问题如下: -

"当定期作业达到30分钟连续执行时,定期作业的新实例将启动,因此我将有两个实例而不是同时运行的实例,这就是我收到2封电子邮件的原因."

现在,如果定期工作不到30分钟(例如29分钟),我将不会遇到任何问题,但如果重复执行的工作超过30分钟,那么由于某种原因或其他原因,将启动新工作.虽然当我在执行作业期间访问hangfire仪表板时,我发现只有一个活动作业,当我监视我的数据库时,我可以从sql profiler看到有两个作业访问数据库.这种情况发生在经常性工作开始30分钟后(在我们的案例中是17:30),这就是为什么我收到2封电子邮件,这意味着2个重复工作在后台运行而不是一个.

那么有人可以提出这方面的建议吗,如果目前的重复工作执行时间超过30分钟,我怎么能避免因自动启动新的定期工作而导致绞火?谢谢

asp.net iis background-process asp.net-mvc-5 hangfire

8
推荐指数
4
解决办法
7390
查看次数

同步适配器中的ContentResolver.requestSync在Android中不起作用

我正在尝试使用'StubProvider'和'StubAuthenticator'编写同步适配器,我遵循了官方指南,我的代码运行没有任何错误,但'onPerformSync()'没有被调用,我尝试了一切但没有用.

我的完整项目可以从https://www.dropbox.com/s/48bgj3wweehaieu/MyApplication.zip?dl=0下载

这是我正在使用的类:

类MainActivity

public class MainActivity extends FragmentActivity implements View.OnClickListener {

    // Constants
    // The authority for the sync adapter's content provider
    public static final String AUTHORITY = "com.syncadaptertest.StubProvider";
    // An account type, in the form of a domain name
    public static final String ACCOUNT_TYPE = "com.syncadaptertest";
    // The account name
    public static final String ACCOUNT = "dummyaccount";
    // Instance fields
    Account mAccount;

    private ImageButton mRefreshBtn = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mRefreshBtn …
Run Code Online (Sandbox Code Playgroud)

java android stub background-process android-syncadapter

8
推荐指数
2
解决办法
6085
查看次数

如何使用自定义时钟与PHP程序使用Heroku Worker作业?

我是Heroku的新手.我正在努力实现一些简单的事情(至少我希望如此),但似乎没有直接的方法可以做到这一点.

我有几个PHP文件,我试图作为预定的工作(每5分钟)运行.这些运行一些时间可能需要超过30秒才能完成.因此,据我所知,我需要将它们设置为工人工作.

Heroku上给出的示例似乎是一个复杂的示例,我无法理解现有的PHP文件应该如何标记为worker.

另外,我想安排这个工人工作每5分钟运行一次.文档是指自定义时钟,但PHP没有示例.

有人可以指点我一个关于如何使用Worker进程并为他们安排Heroku for PHP程序的教程吗?初学者可以遵循的东西.

谢谢!

php clock scheduler heroku background-process

8
推荐指数
1
解决办法
762
查看次数

如何在后台任务中使用具有依赖性的范围服务

这是我的风景。我想使用后台任务向订阅用户发送时事通讯。这是由 MailService 完成的,它具有 UnitOfWork 作为依赖项。

我尝试了docs.microsoft.com 中的解决方案, 因此在我的情况下,我使用 IMailService 方法而不是 ILogger,但出现错误:

System.InvalidOperationException: '不能从单例 >'Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor' 使用范围服务 >'Fit4You.Core.Data.IUnitOfWork'。

我不想让我的 UnitOfWork 或 DbContext 具有单例生命周期。是否有可能以某种方式使用范围为 UnitOfWork 的 MailService 的依赖项?

我知道 IServiceScopeFactory 但可能不知道如何正确使用它。

我正在使用 .NET Core 2.2 并内置接口 IHostedService

范围邮件服务:

public class ScopedMailService : IScopedMailService
{
    private readonly IMailService mailService;

    public ScopedMailService(IMailService mailService)
    {
        this.mailService = mailService;
    }

    public void DoWork()
    {
        mailService.SendNewsletterToSubscribedUsers();
    }
}
Run Code Online (Sandbox Code Playgroud)

消费范围邮件服务:

public class ConsumeScopedMailService : IHostedService
{
    private Timer timer;
    private readonly IMailService mailService;
    public IServiceProvider Services …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection background-process background-service asp.net-core-2.2

8
推荐指数
1
解决办法
2446
查看次数