我计划用 Python 创建一个长时间运行的后台进程,但我仍然不确定是否使用os.spawnle或线程。我只读过它,因此我对生成或线程没有太多经验。何时使用哪个有什么经验法则吗?
非常感谢
我在后台运行了一个多线程程序:
./my_task &
Run Code Online (Sandbox Code Playgroud)
然后我退出,然后再次登录。现在jobs命令不显示该程序,但top显示该程序的线程。所以它仍然在运行。怎么阻止呢?我想我可以杀死每个线程,但是线程很多,我不知道它会如何影响my_task程序。
我正在使用 Debian Squeeze。
我有一个正在运行的 ASP.NET MVC4 网站,现在我需要某种持续运行的后台任务。但这可能吗?
MVC4 网站是一种通知系统。其他网站可以在此网站上注册CallbackURL,并且该网站应在指定的时间间隔内触发该回调 URL。例如,每小时。
通常,我的网站代码仅在我访问页面时才会激活。但为了完成这项工作,我需要一种方法让我的 ASP.NET 网站在后台持续运行。因此它可以进行检查并在必要时进行 HTTP 调用。
但重要的是,其他网站可以通过Web 请求而不是通过套接字注册自己的CallbackURL 。http
在 ASP.NET MVC Web 应用程序中可能出现这样的情况吗?或者我需要不同的方法吗?
TL;DR关闭终端窗口后如何将bg(后台)作业转移到(前台)?fg
完整 我正在使用终端启动 Spotify 并使用CTRL+Z和将其置于后台bg。在此窗口中,一切都按预期运行:fg再次将进程置于前台并向jobs我显示 Spotify 作为正在运行的进程。如果我关闭终端窗口,就会出现问题。
当我关闭终端窗口并打开一个新的终端窗口后,该jobs命令找不到在后台运行的 Spotify。因此我无法再访问停止或关闭的过程。
这种行为有什么好处CTRL+Z, fg, bg& jobs?我怎样才能恢复我的进程?
我正在尝试在执行控制器操作 3 分钟后运行作业。
我用 DelayedJob 试过这个:
# in my controller
def index
@books = Book.all
Delayed::Job.enqueue(ReminderJob.new(params[:user_id]))
end
Run Code Online (Sandbox Code Playgroud)
在ReminderJob.rb文件中:
class ReminderJob < Struct.new(:user_id)
def perform
p "run reminder job"
# do something
end
handle_asynchronously :perform, :run_at => Proc.new { 3.minutes.from_now }
end
Run Code Online (Sandbox Code Playgroud)
但是,在访问索引页面时,我在日志中没有看到任何内容,3 分钟后什么也没有发生。
我做错了什么 ?是否有另一种推荐的方法可以在不使用的情况下“在 X 分钟内”运行任务sleep?
当我的应用程序进入后台时,GCDWebServer (3.3.3) 发生崩溃:
#3 0x000000010041ea80 in -[GCDWebServer dealloc] at project/Pods/GCDWebServer/GCDWebServer/Core/GCDWebServer.m:221
#4 0x00000001004248b8 in __destroy_helper_block_ ()
#5 0x000000018dd52a28 in _Block_release ()
#6 0x00000001020ad21c in _dispatch_client_callout ()
#7 0x00000001020b2284 in _dispatch_main_queue_callback_4CF ()
#8 0x000000018ee21f2c in __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ ()
#9 0x000000018ee1fb18 in __CFRunLoopRun ()
#10 0x000000018ed4e048 in CFRunLoopRunSpecific ()
#11 0x00000001907d1198 in GSEventRunModal ()
#12 0x0000000194d28628 in -[UIApplication _run] ()
#13 0x0000000194d23360 in UIApplicationMain ()
#14 0x000000010009243c in main at project/main.m:10
#15 0x000000018dd305b8 in start ()
Enqueued from com.apple.main-thread (Thread 1)Queue : com.apple.main-thread (serial) …Run Code Online (Sandbox Code Playgroud) 我试图每天在9:00 AM执行hangfire定期工作。这是我想做的
RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
Run Code Online (Sandbox Code Playgroud)
我应该把这行代码放在哪里?
抱歉,这是一个愚蠢的问题。
我有一个 Django 应用程序,我想将其配置为 celery 以运行后台任务。
套餐:
芹菜==4.2.1
姜戈==2.1.3
Python==3.5
Redis 服务器==3.0.6
settings.py文件中 celery 的配置是:
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Kolkata'
CELERY_BEAT_SCHEDULE = {
'task-number-one': {
'task': 'app.tasks.task_number_one',
'schedule': crontab(minute='*/1'),
},
}
Run Code Online (Sandbox Code Playgroud)
和celery.py文件:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings.prod')
app = Celery('project') …Run Code Online (Sandbox Code Playgroud) 我如何使用 Jenkins 触发一个脚本说 A(在 python 中),这样即使在 Jenkins 构建完成后,从脚本 A 内部触发的 shell 脚本仍然在后台运行。
现在,我观察到的是,一旦 Jenkins 工作结束,它也会终止后台 shell 脚本。但是,在终端上手动运行 python 脚本没问题。
有没有办法可以跳过从 Jenkins 杀死那个后台 shell 脚本?
在 bash 脚本中,我有一个长时间运行的命令(rsync例如),有时会暂时不显示输出,所以我想做两件事:
在该命令上使用微调器来显示脚本没有冻结(即我们只是在等待输出);和,
完成后获取长时间运行的命令的退出状态,以便稍后在脚本中进行进一步测试。
但问题是,我不太了解将进程发送到后台的处理方式,以及以这种方式处理退出代码的方式,所以我不确定如何进行这项工作。
这是我到目前为止所拥有的,感谢@David C. Rankin的微调器:
#!/bin/bash
spinner() {
local PROC="$1"
local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ?Stack Overflow Community?'}"
local delay="0.1"
tput civis # hide cursor
printf "\033[1;34m"
while [ -d /proc/$PROC ]; do
printf '\033[s\033[u[ / ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ — ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ \ ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ | ] %s\033[u' "$str"; …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×2
bash ×2
python ×2
c# ×1
celery ×1
cocoa-touch ×1
crash ×1
delayed-job ×1
django ×1
exit-code ×1
gcdwebserver ×1
hangfire ×1
ios ×1
jenkins ×1
jobs ×1
linux ×1
recurring ×1
redis-server ×1
shell ×1
spawn ×1
terminal ×1
wait ×1