标签: task-queue

App Engine 任务队列等待限制

在发生事件之前,任务可以在任务队列中等待处理多长时间?如果不是永远,那么可能会发生什么?

我可以将大量任务添加到处理率非常低的队列中,并在几天/几周/几个月内处理它们吗?

如果任务等待时间过长,是否会从队列中弹出?

任务队列配额和限制

maximum countdown/ETA for a task:30 days from the current date and time
Run Code Online (Sandbox Code Playgroud)

我认为这是在谈论有意/有计划地在未来设置 eta,而不是允许任务等待多长时间。

google-app-engine task-queue

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

如何配置queue_classic日志记录

我找不到任何关于如何使queue_classic将日志写入文件的解决方案.Queue_Classic用于记录的Scrolls似乎也没有任何示例.

有人能提供一个有效的例子吗?

ruby ruby-on-rails worker-process task-queue

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

Android-DownloadManager-清除队列中的旧下载

我正在构建一个应用程序,出于所有并发原因,该应用程序需要了解所有下载是否均已完成。只有当我所有的下载完成后,才能启动某个功能。

我设法编写了一个检查队列中旧下载的函数:

DownloadManager dm = (DownloadManager) context.getSystemService(context.DOWNLOAD_SERVICE);

    Query q = new Query();
    q.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PENDING|DownloadManager.STATUS_RUNNING);

    Cursor c = dm.query(q);
Run Code Online (Sandbox Code Playgroud)

问题是-可以肯定的是-在初始化时,我想清理队列并删除所有条目。

有什么想法我现在可以删除条目吗?

此功能对我不起作用,因为我不想物理删除文件...只需清空队列。

有任何想法吗?

java android task-queue android-download-manager

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

“调用栈”和“任务队列”的区别

我是一名开发人员,难以区分Call StackTask Queue两个术语。有没有人可以帮我解释一下区别?

提前致谢。

javascript jquery callstack task-queue

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

有没有办法使用 App Engine Java 运行时动态设置任务的目标?

使用 App Engine Python 运行时对后台任务进行排队时,您可以为队列指定一个目标,该目标将发送要在特定服务、版本或实例上运行的任务:

task = taskqueue.add(
    url='/update_counter',
    target='worker',
    params={'amount': amount})
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Java 中做到这一点?该文档提到了该target参数,但没有显示如何使用它的示例。该Queue.add方法没有针对 的选项target。这个TaskOptions类也没有任何看起来像target

这个问题记录了如何使用target,但答案是在queue.xml. 我想在运行时选择目标,比如 Python。

java google-app-engine task-queue google-cloud-platform

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

Laravel 5.6 如何安排邮件队列

我正在尝试安排一封电子邮件来提醒明天必须完成的任务的用户。我做了一个自定义命令email:reminder。这是我在自定义命令中的代码:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Todo;
use Illuminate\Support\Facades\Mail;

class SendReminderEmail extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'email:reminder';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Remind users of items due to complete next day';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute …
Run Code Online (Sandbox Code Playgroud)

php scheduled-tasks task-queue laravel laravel-5.6

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

Python:不同特定工作人员的分布式任务队列

我正在寻找一个管理任务分发(例如任务队列)的 python 库/框架。然而,任务需要专门的工人:工人 A 只能处理类型的任务a,工人 B 和 C 只能处理类型b等。此外,这些工人将在不同的计算机上运行并且不能共享相同的代码库(因为,就像在制造线上,每个任务都绑定到控制特定的硬件,只有一台计算机可以访问)。

我看过像 python RQ这样的库或 Celery,但如果我理解正确的话,它们需要相同的代码库才能在不同的工作人员上运行,并且用于分布式计算。我正在寻找的基本上只是抽象任务队列的管理和工作人员可以通过网络获取任务的机制。一项任务基本上只是一些关于它的进度、错误、结果等的数据和元信息。如果任务也可以相互依赖,那么一项任务可以依赖另一项任务的结果,这是一个奖励。

是否有一个简单的库,负责管理队列、网络协议等,提供我正在寻找的内容?

python distributed task-queue

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

使用 RQ 工作线程、队列和作业时管理路径的正确方法是什么

我的第一个问题/帖子...请善待....

我正在做一个个人项目,其中一个模块循环运行以收集数据。当数据进入时,它会将数据插入数据库交给队列中的一个函数,在那里一个侦听 rq 工作器接收它并处理该函数。数据库使用 SQLAlchemy 进行管理,这意味着它必须生成引擎、会话并定义数据库表。

代码文件的结构是:

--/home/..../collect-view/  (this is the project folder)
    -- DataCollection
        -- main_client.py  (main loop waiting for user data)
        -- collect_data.py (contains the database insertion function)
        -- base.py         (the base file for SQLAlchemy database definition)
        -- tables.py       (the file which sets up the table name and definition)
    -- app.db                  (the database file)
Run Code Online (Sandbox Code Playgroud)

注意:数据库文件位于更高级别的目录中,因为它也被另一个位于此级别的应用程序(Flask 应用程序)访问

要实现此代码,“collect_data”必须导入“base”和“tables”,“tables”必须导入“base”。这被证明是一个问题,因为一旦 collect_data 函数(称为“传输”)由工作人员运行,它就无法再找到要导入的文件,并且工作人员会吐出一个异常,说它无法导入“base ”。我在网上搜索了答案,最终在 nvie 的 Github 上找到了一个答案,其中提到使用 --path 选项将工作人员引导到正确的路径。我通过实现它来工作:

$ rq worker rq_worker_data2db --path /home/../../collect_view/DataCollection
Run Code Online (Sandbox Code Playgroud)

然后我遇到了另一个与路径相关的失败,其中工作人员说它找不到我试图将数据插入的数据库表。所以我更改了引擎创建步骤以包含我的完整路径......

base_url = '/home/.../collect_view/'
engine = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy task-queue python-rq

5
推荐指数
0
解决办法
1130
查看次数

如何在 python-rq 中在计划作业和排队作业之间创建“depends_on”关系

我有一个 Web 服务(Python 3.7、Flask 1.0.2),其工作流由 3 个步骤组成:

  • 步骤 1:将远程计算作业提交到商业排队系统(IBM 的 LSF)
  • 第 2 步:每 61 秒轮询一次远程计算作业状态(61 秒因为缓存作业状态结果)
  • 第 3 步:如果第 2 步返回远程计算作业状态 ==“DONE”,则数据后处理

远程计算作业的长度是任意的(在秒和天之间),每一步都依赖于上一步的完成:

with Connection(redis.from_url(current_app.config['REDIS_URL'])):
    q = Queue()
    job1 = q.enqueue(step1)
    job2 = q.enqueue(step2, depends_on=job1)
    job3 = q.enqueue(step3, depends_on=job2)
Run Code Online (Sandbox Code Playgroud)

但是,最终所有工作人员(4 名工作人员)都将进行轮询(4 个客户端请求中的第 2 步),而他们应该继续执行其他传入请求的第 1 步和已成功通过第 2 步的那些工作流的第 3 步。

工人应该在每次投票后被释放。他们应该定期返回第 2 步进行下一次轮询(每个作业最多每 61 秒一次),如果远程计算作业轮询未返回“DONE”,则重新排队轮询作业。


此时我开始使用rq-scheduler(因为间隔和重新排队功能听起来很有希望):

with Connection(redis.from_url(current_app.config['REDIS_URL'])):
    q = Queue()
    s = Scheduler('default')

    job1 = q.enqueue(step1, REQ_ID)

    job2 = Job.create(step2, (REQ_ID,), depends_on=job1)
    job2.meta['interval'] = 61
    job2.origin …
Run Code Online (Sandbox Code Playgroud)

python task-queue redis python-rq

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

如何在停止Redis然后稍后启动它后继续执行芹菜队列?

我正在运行一个 Django 应用程序,该应用程序使用 Celery 并使用 Redis 服务器作为工作线程运行异步任务。

我需要能够停止整个基础架构并将其重新启动,而不会导致任务执行中断。所以我需要这样做:

1) Stop the Django webservice
2) Stop celery
3) Shut down Redis daemon
4) Make a few changes in the server or move to a different machine
5) Start Redis daemon
6) Start Celery
7) Start the Django webservice
Run Code Online (Sandbox Code Playgroud)

当整个基础设施再次备份时,它应该从停止的地方继续。即如果队列中有任何任务,它应该继续执行它们。

我该怎么做?有没有办法保存队列并稍后继续?

django task-queue redis celery django-celery

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