标签: background-process

长期运行的Sidekiq工作一直在濒临死亡

我正在使用sidekiq gem来处理Rails中的后台作业.出于某种原因,这项工作在一段时间后就会挂起 - 这个过程要么变得反应迟钝,要么出现top但没有多少,或者神秘地消失,没有错误(没有报告给airbrake.io).

有没有人有这方面的经验?

ruby-on-rails background-process resque sidekiq

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

可以使用推送通知来运行代码而无需通知用户吗?

我有一个应用程序需要每24小时与服务器通信(刷新它的数据).即使应用程序未打开也不在后台,这种情况需要发生.

理想情况下我喜欢的是:

  • 每24小时,我的服务器会向iPad发送推送通知
  • 这会唤醒应用程序,并运行刷新数据所需的代码
  • 然后丢弃通知

这有可能吗?
应用程序是否仅在用户点击通知后被唤醒?或者我可以在显示通知之前运行一些代码吗?我甚至可以丢弃通知消息吗?

如果推送通知不是正确的方法,那么???

多谢你们!

notifications background-process push-notification ios

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

在PHP中使用FOREGROUND请求的分布式处理系统

我熟悉用于处理后台工作的php-resque和其他工作处理系统,但我不认为它会做我需要的工作.

在这种情况下,我有一个传入的Web服务请求,需要对外部系统执行多个(2-4)独立调用,并返回到客户端的综合响应.每个标注可能需要300-500ms,因此我希望每个标注并行执行,以便整个过程不超过500ms +/-总计.

我的php-resque和其他系统的问题是等待甚至1秒开始发出这些标注太长时间不能等待,我正在考虑另一种方法.

我在想什么:

  1. 描述每个单独的标注并将其存储在具有给定唯一请求ID的数据库中
  2. 我们立即开始作为异步php进程(也称为"工作进程")
  3. 每个工作人员将其结果写回作业记录并指示它已完成
  4. 同时,我们每50-100ms轮询一次工作表,以检查每项工作的状态
  5. 当每个完成后,我们会根据需要解析结果并返回响应.

当然,我们会为每个请求和整个过程实施超时...

思考?我错了吗?php-resque几乎可以立即启动多个并行工作吗?

php background-process resque

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

将进程的输出写入文件名中包含进程标识的文件

这就是我想要实现的目标:

  • 在后台运行命令/进程,并将其输出重定向到临时文件,该文件以后台进程的进程ID命名.
  • 例:
    • top&//进程此后台进程的ID为1123
    • top的输出应存储在文件1123.temp中

这可能吗?因为要在后台真正运行它,我们不必在将其标记为后台进程之前进行重定向吗?或者有一些技巧可以解决这个问题吗?

bash pid background-process io-redirection

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

Python的sh模块 - 在后台运行Command包装器

当使用python的sh模块(不是stdlib的一部分)时,我可以将路径中的程序作为函数调用并在后台运行它:

from sh import sleep

# doesn't block
p = sleep(3, _bg=True)
print("prints immediately!")
p.wait()
print("...and 3 seconds later")
Run Code Online (Sandbox Code Playgroud)

我可以使用sh的Command包装并传入可执行文件的绝对路径(如果可执行文件不在我的路径中或者包含诸如此类的字符,则会有帮助.):

import sh
run = sh.Command("/home/amoffat/run.sh")
run()
Run Code Online (Sandbox Code Playgroud)

但是尝试在后台运行包装的可执行文件,如下所示:

import sh
run = sh.Command("/home/amoffat/run.sh", _bg=True)
run()
Run Code Online (Sandbox Code Playgroud)

失败并出现回溯错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument '_bg'
Run Code Online (Sandbox Code Playgroud)

如何sh.Command在后台运行包装的可执行文件?寻找一个优雅的解决方案.

编辑:

我使用python解释器来测试传递_bg给命令(而不是包装器),我现在意识到这是测试阻塞和非阻塞进程的一种不好的方法:

>>> import sh
>>> hello = sh.Command("./hello.py")
>>> hello(_bg=True) # 5 second delay …
Run Code Online (Sandbox Code Playgroud)

python background-process

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

使用输入/输出重定向在后台运行进程

我很想知道当进程具有输入/输出重定向以在后台运行进程时,代码中使用'&'运算符是否有所不同

在后台运行流程方面,这些代码行之间有什么区别?如果有,我如何确定差异将是什么?

setsid python script.py < /dev/zero &> log.txt &

setsid python script.py < /dev/zero & > log.txt &

setsid python script.py < /dev/zero > log.txt &

setsid python script.py & < /dev/zero > log.txt
Run Code Online (Sandbox Code Playgroud)

linux bash shell background-process

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

应用程序更新后是否可以恢复centralManager状态?

我正在开发一个我需要支持连续后台应用程序执行的应用程序.我可以使用Apple的可用后台模式继续通信.但是当应用程序处于后台(或未运行)并安装更新版本的应用程序时面临一个问题,之后,centralManager委托已停止运行.所以我不确定是否可以在应用更新后恢复CentralManager状态?

如果它不可能那么还有其他选项(或补丁;))可用?

另一种方法是发送静默推送通知以启动后台运行的应用程序(但为此,我们必须在所有设备上安装新应用程序版本后立即发送静默通知).

objective-c background-process ios core-bluetooth

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

锁屏iOS 9打破了我的异步功能

当按下主页按钮时,我的应用程序变为非活动状态,然后转到后台,但我的功能仍在执行:

        let qualityOfServiceClass = QOS_CLASS_BACKGROUND
        let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
        dispatch_async(backgroundQueue, {
            // SOME LONG CODE (parse a NSXMLParse)
            })
        })
Run Code Online (Sandbox Code Playgroud)

但是当我按下Home按钮时出现错误并且我的功能"中断"(未完成,只是删除):

DATE应用程序的名称[498:53974]** - [UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:]**unhandled action - > {handler = remote; info = {(1)= 5; }; }

所以我测试了这样的东西:首先,按下主页按钮,然后按下锁定按钮.这样我就不会得到错误,一切都好.

当我的应用程序处于活动状态时按下锁定按钮时,我只有这个错误,并且在应用程序变为非活动状态和背景之前发生此错误

我正在使用iOS 9和Xcode 7 beta 5,swift 2

background-process dispatch-async ios9 swift2

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

如果为Android应用启用了"限制后台数据",则以编程方式检测

我搜索了堆栈溢出,找不到为我的应用程序检测此设置的答案.在Android Marshmallow中,"设置"中有一个选项:

设置 - >数据使用 - >我的应用程序 - >切换"限制应用程序后台数据","禁用蜂窝网络上的后台数据"

我想警告用户是否在我的应用程序中设置了此项.如何检测是否为我的应用设置了此项.任何指针赞赏.

android background-process

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

Xcode 11-什么是新的“背景处理”背景模式?

在XCode 11中,有一个新的后台模式“后台处理”。我找不到有关此新背景模式功能的任何信息。

后台模式功能图片

该信息是否有任何资源?此模式可以以某种方式影响在后台使用位置更新(区域监视和SLC)的应用程序吗?

xcode background-process ios ios-background-mode xcode11

6
推荐指数
3
解决办法
1266
查看次数