标签: jobs

即使有延迟,Laravel也会立即处理排队的工作

我目前正在开发关于私人服务器(例如Minecraft服务器)的个人应用程序,并且由于查询服务器需要一些时间,我决定实施排队作业,但是,它们工作不正常,即使在调用时也会立即运行它们被延迟,导致页面请求的大量延迟.

这是我的HomeController的索引(),它调用作业以30秒的延迟更新每个服务器:

public function index()
{
    $servers = Server::all();

    foreach($servers as $server)
    {
       //Job Dispatch
       $job = (new UpdateServer($server->id))->delay(30);
       $this->dispatch($job);
    }
    return view('serverlist.index', compact('servers'));
}
Run Code Online (Sandbox Code Playgroud)

更新服务器的作业类如下:

class UpdateServer extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    protected $id;

    public function __construct($id)
    {
       $this->id = $id;
    }

    public function handle(){
       $server = Server::findOrFail($this->id);

       //preparing the packet
       $test = new RAGBuffer();
       $test->addChar('255');
       $test->addChar('1');
       $test->addShort(1 | 8);

       //finding the server
       $serverGame = new RAGServer($server->server_ip);

       //Get server info
       $status = $serverGame->sendPacket($test);

       $server->onlinePlayers = …
Run Code Online (Sandbox Code Playgroud)

jobs laravel-5

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

Kubernetes工作清理

根据我的理解,Job对象应该在一定时间后收获pod.但是在我的GKE集群(Kubernetes 1.1.8)上,似乎"kubectl get pods -a"可以从几天前列出pod.

所有都是使用Jobs API创建的.

我注意到用kubectl删除作业删除作业后,pod也被删除了.

我主要担心的是,我将在批处理作业中在集群上运行数千和数万个pod,并且不希望重载内部积压系统.

jobs kubernetes

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

如何跳过推送事件的 GitHub Actions 作业?

使用 Travis CI,我们可以通过向提交添加后缀来跳过特定提交的构建。这在Travis CI 中有描述。当我只编辑README.md与代码无关的内容并且不需要触发飞行前构建时,我发现此功能很实用。

[skip ci]
Run Code Online (Sandbox Code Playgroud)

如何on: push使用 GitHub 操作跳过作业触发事件?

name: Maven Build
on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Check-out project
      uses: actions/checkout@v1
    - name: Set up JDK 11.0.3
      uses: actions/setup-java@v1
      with:
        java-version: 11.0.3
    - name: Build with Maven
      run: mvn -B package --file pom.xml
Run Code Online (Sandbox Code Playgroud)

答案摘要

非常感谢所有提供各种方法来实现它的回答者。我敢打赌,每个人在问题的起源和 CI 方法方面都需要一些不同的东西。以下是为快速导航列出的答案:

git jobs continuous-integration github github-actions

25
推荐指数
3
解决办法
9174
查看次数

从存储过程执行SQL Server代理作业并返回作业结果

需要一个调用SQL Server代理作业的存储过程,并返回作业是否成功运行.

到目前为止我有

CREATE PROCEDURE MonthlyData
AS
EXEC msdb.dbo.sp_start_job N'MonthlyData'

WAITFOR DELAY '000:04:00'

EXEC msdb.dbo.sp_help_jobhistory @job_name = 'MonthlyData'
GO
Run Code Online (Sandbox Code Playgroud)

哪个开始工作,如果工作成功与否,最好的方法是什么?

确定编辑并使用了WAITFOR DELAY,因为作业通常在3-4分钟之间运行,从不超过4分.工作但是有更有效的方法吗?

sql t-sql sql-server jobs sql-server-2008

21
推荐指数
2
解决办法
5万
查看次数

Powershell:从Receive-Job获取输出

我有一系列正在运行的作业.完成后我使用receive-job并将输出写入屏幕.我想获取该输出并将其记录到文件中.我不希望在作业运行时产生输出,因为一次运行多个作业,记录将会散布.Get-Job | Receive-Job以非常有条理的方式打印输出.

我已经尝试了以下所有内容,没有输出写入文件或存储在变量中,它只是进入屏幕:

#Wait for last job to complete
While (Get-Job -State "Running") {    
    Log "Running..." -v $info
    Start-Sleep 10        
}    
Log ("Jobs Completed. Output:") -v $info

# Getting the information back from the jobs
foreach($job in Get-Job){
    Receive-Job -Job $job | Out-File c:\Test.log -Append
    $output = Receive-Job -Job $job        
    Log ("OUTPUT: "+$output)
    Receive-Job -Job $job -OutVariable $foo
    Log ("FOO: "+$foo)
}
Run Code Online (Sandbox Code Playgroud)

编辑:在看到Keith的评论之后,我已经删除了foreach中额外的Receive-Job调用:

# Getting the information back from the jobs
foreach($job in Get-Job){
    Receive-Job -Job $job -OutVariable temp …
Run Code Online (Sandbox Code Playgroud)

powershell jobs

20
推荐指数
4
解决办法
6万
查看次数

对hadoop工作跟踪器api的困惑

我试着从求职者那里收集一些信息.对于初学者,我想首先获得运行的工作信息,例如工作ID或工作名称等.但是已经卡住了,这就是我所拥有的(打印出当前正在运行的工作的工作ID):

public static void main(String[] args) throws IOException {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "zk1.myhost,zk2.myhost,zk3.myhost");
        conf.set("hbase.zookeeper.property.clientPort", "2181");

        InetSocketAddress jobtracker = new InetSocketAddress("jobtracker.mapredhost.myhost", 8021);
        JobClient jobClient = new JobClient(jobtracker, conf);
        JobStatus[] jobs = jobClient.jobsToComplete();

        for (int i = 0; i < jobs.length; i++) {
            JobStatus js = jobs[i];
            if (js.getRunState() == JobStatus.RUNNING) {
                JobID jobId = js.getJobID();
                System.out.println(jobId);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

上面努力时显示作业ID,但现在我想显示的作业名称以及工作方式的魅力.所以我在打印作业ID后添加了这一行:

System.out.println(jobClient.getJob(jobId).getJobName());
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.hadoop.mapred.JobClient$NetworkedJob.<init>(JobClient.java:226)
    at org.apache.hadoop.mapred.JobClient.getJob(JobClient.java:1080)
    at org.apache.test.JobTracker.main(JobTracker.java:28)
Run Code Online (Sandbox Code Playgroud)

jobClient不是null.我知道这是因为我尝试使用null …

java jobs hadoop hbase

20
推荐指数
1
解决办法
5218
查看次数

复制数据库SQL Server 2012时"作业失败"

我正在尝试复制数据库.通过复制数据库向导时,我收到执行SQL Server代理作业错误.错误说明

工作失败了.检查目标服务器上的事件日志以获取详细信息

执行操作

  • 添加包的日志(成功)

  • 添加传输数据库对象的任务(成功)

  • 创建包(成功)

  • 启动SQL Server代理作业(成功)

  • 执行SQL Server代理作业(错误)

错误:

工作失败了.检查目标服务器上的事件日志以获取详细信息.(复制数据库向导)

我似乎无法找到造成这个问题的原因.我使用正确的方法吗?我只需要复制这个数据库.提前致谢.

database jobs copy agent sql-server-2012

19
推荐指数
3
解决办法
4万
查看次数

19
推荐指数
1
解决办法
5777
查看次数

Action Job/Mailer的'deliver_now`和`deliver_later`之间的区别

ActionJob在Rails中连接的常见模式是使用一个perform()方法设置一个Job,该方法通过perform_now或者异步调用perform_later

在邮件程序的特殊情况下,可以直接打电话deliver_nowdeliver_later因为ActionJob是很好的集成ActionMailer.

轨道文档有以下评论-

# If you want to send the email now use #deliver_now
UserMailer.welcome(@user).deliver_now

# If you want to send the email through Active Job use #deliver_later
UserMailer.welcome(@user).deliver_later
Run Code Online (Sandbox Code Playgroud)

措辞使得它看起来像deliver_now不会使用ActiveJob发送邮件.那是正确的,如果有啥之间真正的差异deliver_nowdeliver_later?一个不是异步的吗?

同样,同样的差异适用于perform_nowperform_later

谢谢!

jobs ruby-on-rails rails-activejob

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

gitlab ci:手动或仅在master时运行构建作业

是否可以使用以下要求定义构建作业的gitlab-ci文件:

  • 手动OR时执行
  • 由主推送执行

我想到了类似的东西,但这是错误的:

build_jar:
stage: build
script:
  - echo "build jar"
artifacts:
  paths:
    - jar/path/*.jar
only:
  - master
when: manual
Run Code Online (Sandbox Code Playgroud)

对我来说,唯一的解决方案是拥有两个作业,一个用于主推,一个用于手动输入.但缺点是,在gitlab中它变得令人困惑

jobs gitlab gitlab-ci

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