标签: job-scheduling

石英在集群配置中的奇怪行为

我正在开发预定服务。

该应用程序是使用 JDK 1.6、Spring Framework 2.5.6 和 Quartz 1.8.4 开发来调度作业的。

我有两个带有 WebLogic Server 10.3.5 的集群服务器。

有时似乎石英的调度变得疯狂。分析它发生的条件,集群服务器之间似乎有一个大于一秒的时钟“不同步”。然而,这种不同步并不总是由于服务器的系统时间,有时看起来即使机器的时钟同步,JVM也会引入一点“延迟”。

有没有人遇到过同样的问题?有办法解决吗?

提前致谢

java cluster-computing quartz-scheduler job-scheduling

7
推荐指数
4
解决办法
2万
查看次数

使用powershell脚本中的参数在后台启动.exe

我有一个程序,我通常在powershell中这样开始:

.\storage\bin\storage.exe -f storage\conf\storage.conf
Run Code Online (Sandbox Code Playgroud)

在后台调用它的正确语法是什么?我试过很多组合,比如:

start-job -scriptblock{".\storage\bin\storage.exe -f storage\conf\storage.conf"}
start-job -scriptblock{.\storage\bin\storage.exe} -argumentlist "-f", "storage\conf\storage.conf"
Run Code Online (Sandbox Code Playgroud)

但没有成功.它也应该在powershell脚本中运行.

powershell jobs job-scheduling

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

用累积表示设置时间

调度问题有许多系列.我正在研究一个问题,我有一系列的工作/任务,从一个家庭到另一个家庭的过渡需要重新配置机器(设置时间).

cumulatives[2/3]用来解决这个问题,但我不确定如何表达设置时间.

在这个小例子中,我有10个任务属于3个不同的家庭.任何任务都可以在任何计算机上运行,​​但是从一个系列中的一个任务切换到另一个系列中的另一个任务需要添加设置时间.

:- use_module(library(clpfd)).
:- use_module(library(lists)).

go( Ss, Es, Ms, Tm, Lab ) :-

    Ss = [S1, S2, S3, S4,S5,S6,S7,S8,S9,S10], %Starttimes
    Es = [E1, E2, E3, E4,E5,E6,E7,E8,E9,E10], %Endtimeds
    Ms = [M1, M2, M3, M4,M5,M6,M7,M8,M9,M10], %MachineIds



    domain(Ss, 1, 30),
    domain(Es, 1, 30),
    domain(Ms, 1, 3 ),

    Tasks = [
        %Family 1: Setuptime, Su1 = 4, 
        task(  S1, 6,  E1,  1, M1 ),  %Task T1
        task(  S2, 6,  E2,  1, M2 ),  %Task T2
        task(  S3, 3,  E3,  1, …
Run Code Online (Sandbox Code Playgroud)

prolog constraint-programming job-scheduling sicstus-prolog clpfd

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

取消使用Hangfire.io安排的正在运行的作业

我使用hangfire.io库安排工作,我可以观察它在内置仪表板中处理.但是,我的系统要求可以从仪表板中取消作业.

可以选择删除正在运行的作业,但这只会更改数据库中作业的状态,并且不会停止运行作业.

我在文档中看到有选项可以通过,IJobCancellationToken但据我所知,它用于在整个服务器关闭时正确停止作业.

有没有办法实现已经运行的任务的编程取消?

我应该编写自己的组件来定期提取数据库并检查当前服务器实例是否正在运行已取消的作业?例如,维护字典jobId - > CancellationTokenSource,然后使用适当的tokensource信号取消.

job-scheduling hangfire

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

withoutOverlapping()在Laravel Schedule中不起作用

$schedule->call(function () 
        {
            error_log("Line Schedule 1:Start");
            //Send Email
            error_log("Line Schedule 1:End");

        })->everyFiveMinutes()->name('event_name:1')->withoutOverlapping();


        $schedule->call(function () 
        {
          error_log("Line Schedule 2:Start");
           //Send Email
          error_log("Line Schedule 2:End");
        })->everyFiveMinutes()->name('event_name:2')->withoutOverlapping();
        $schedule->call(function () 
        {
          error_log("Line Schedule 3:Start");
              //Send Email
          error_log("Line Schedule 3:End");
        })->everyFiveMinutes()->name('event_name:3')->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)

我使用命令php artisan schedule运行这些schulders:运行并且我并行运行许多实例.和我的日志文件说schulder 2第二次启动,即使它之前的实例还没有完成它.

[01-Jan-2016 11:30:08 UTC] Line Schedule 1:Start
[01-Jan-2016 11:30:11 UTC] Line Schedule 2:Start
[01-Jan-2016 11:30:13 UTC] Line Schedule 3:Start
[01-Jan-2016 11:30:15 UTC] Line Schedule 1:End
[01-Jan-2016 11:30:15 UTC] Line Schedule 2:Start
[01-Jan-2016 11:30:17 UTC] Line Schedule 2:End
[01-Jan-2016 11:30:17 UTC] Line …
Run Code Online (Sandbox Code Playgroud)

php job-scheduling laravel laravel-5 laravel-5.1

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

在Android上,总是调用onStopJob吗?

我正在尝试实施我的第一个JobService。我知道onStartJob实际上可以保证可以致电(是的,如果我指定了一些离谱的要求而没有到期时间,则有一些优势)。但是onStopJob呢?可以保证被调用吗?

具体来说,我有一项工作将在后台执行。但是我有办法知道工作何时完成(例如sharedPrefs)。我希望依靠何时调用onStopJob将通知发送给用户该工作已完成。

注意:onStopJob是发送通知的便捷位置,因为我已经在检查作业是否完成,以了解是否应该重试。

ps需要考虑的事情可能会有所帮助(我也在考虑):如果我onStartJob返回true,那么系统如何知道我的作业何时停止运行(除非调用)onStopJob

android job-scheduling android-jobscheduler

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

如何在oracle sql开发人员中使用链接一个接一个地执行该过程?

我是Oracle SQL的初学者.我正在使用Oracle SQL开发人员工具.我有两个叫做p1和的程序p2.

如何使用链概念在每天的特定时间逐个执行程序,这意味着我应该p1首先执行,一旦完全执行.之后我必须p2每天在特定的时间执行.

在我的情况下,我必须在3.00时钟执行.供您参考,请参阅以下示例代码.有谁能解决这个问题?提前致谢

BEGIN 
    DBMS_SCHEDULER.CREATE_CHAIN (
       chain_name            =>  'my_chain1',
       rule_set_name         =>  NULL,
       evaluation_interval   =>  NULL,
       comments              =>  NULL);
    END;
    /

    BEGIN
     DBMS_SCHEDULER.DEFINE_CHAIN_STEP('my_chain1', 'stepA', 'P1');
     DBMS_SCHEDULER.DEFINE_CHAIN_STEP('my_chain1', 'stepB', 'P2');

    END;
    /

    BEGIN
     DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'TRUE', 'START stepA');
     DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'stepA COMPLETED', 'Start stepB');
     DBMS_SCHEDULER.DEFINE_CHAIN_RULE('my_chain1', 'stepB COMPLETED', 'END');
    END;
    /

    BEGIN
     DBMS_SCHEDULER.ENABLE('my_chain1');
    END;
    /

    BEGIN
     DBMS_SCHEDULER.CREATE_JOB (
       job_name        => 'chain_job_1',
       job_type        => 'CHAIN',
       job_action      => 'my_chain1',
       repeat_interval => 'freq=daily;byhour=13;byminute=0;bysecond=0',  //In my case I should execute …
Run Code Online (Sandbox Code Playgroud)

sql oracle job-scheduling chain

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

JobService 不会在 android 9 中重新安排

我正在尝试让我的应用程序在 Android 9 上运行。以下代码在 Android 8 之前都可以正常工作,但出于某种原因,JobService 不会在 android 9 上重新安排。它第一次被安排,但不会根据到设置周期。

class RetrieveJobService : JobService() {

override fun onStartJob(params: JobParameters): Boolean {
    doBackgroundWork(params)
    return true
}

private fun doBackgroundWork(params: JobParameters) {
    Thread {
        try {
            doRetrieveBackgroundStuff(this)
            jobFinished(params, false)
        } catch (e: Exception) {
            jobFinished(params, false)
        }
    }.start()
}

override fun onStopJob(params: JobParameters): Boolean {
    return false
}

}
Run Code Online (Sandbox Code Playgroud)

这里是我的 JobInfo.Builder

val builder = JobInfo.Builder(jobID, componentName)
                    .setPersisted(true)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    builder.setPeriodic(millis, 15 * 60 * 1000) //15 min
} …
Run Code Online (Sandbox Code Playgroud)

android job-scheduling kotlin jobservice android-9.0-pie

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

如何动态改变芹菜节拍的时间表?

我正在使用芹菜 4.3.0。我正在尝试根据 json 文件中的时间表每 5 秒更新一次 celery beat 的时间表,以便当我手动编辑、添加或删除该 json 文件中的计划任务时,celery beat 会获取更改调度程序而无需重新启动它。

我尝试的是创建一个任务,通过更新app.conf['CELERYBEAT_SCHEDULE']. 该任务每 5 秒成功运行一次,但 celery beat 不会更新到新的计划,即使我设置beat_max_loop_interval为 1 秒。

任务.py

from celery import Celery

app = Celery("tasks", backend='redis://', broker='redis://')
app.config_from_object('celeryconfig')

@app.task
def hello_world():
    return "Hello World!"

@app.task
def update_schedule():
    with open("path_to_scheduler.json", "r") as f:
        app.conf['CELERYBEAT_SCHEDULE'] = json.load(f)
Run Code Online (Sandbox Code Playgroud)

芹菜配置文件

beat_max_loop_interval = 1  # Maximum number of seconds beat can sleep between checking the schedule

beat_schedule = {
    "greet-every-10-seconds": {
        "task": "tasks.hello_world",
        "schedule": 10.0
    }, …
Run Code Online (Sandbox Code Playgroud)

python scheduled-tasks job-scheduling celery celerybeat

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

我们能否可靠地长时间保持 HTTP/S 连接打开?

我的团队维护一个应用程序(用 Java 编写),用于处理长时间运行的批处理作业。这些作业需要按定义的顺序运行。因此,应用程序在预定义的端口上启动套接字服务器以接受作业执行请求。它使套接字保持打开状态,直到作业完成(成功或失败)。这样,作业调度程序就知道一个作业何时结束,并且在成功完成该作业后,它会按预定义的顺序触发下一个作业。如果作业失败,调度程序会发出警报。

这是我们十多年来一直采用的设置。我们有一些作业需要运行几分钟,而另一些则需要几个小时(取决于数量)才能完成。该设置工作正常,没有任何问题。

现在,我们需要将此应用程序移至容器(RedHat OpenShift Container Platform),并且现有的基础设施策略仅允许公开默认的 HTTPS 端口。调度程序位于 OCP 外部,无法访问默认 HTTPS 端口以外的任何端口。

理论上,我们可以使用 HTTPS,将客户端超时设置为非常长的持续时间,并尝试模仿 TCP 套接字的当前设置。但是,由于 HTTP 协议是为服务短期请求而设计的,因此这种设置足够可靠吗?

java http batch-processing job-scheduling

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