草庐IT

celery_worker

全部标签

ruby-on-rails-4 - Sidekiq worker 未定义的局部变量或方法

我正在尝试将Sidekiq与我的应用程序一起使用,但出于某种原因,我得到了一个undefinedlocalvariableormethod"worker"for#我为Sidekiq网络用户界面安装了sidekiq、sinatra和slim,但它没有注册任何东西。我现在确实让sidekiq在另一个终端窗口中运行。worker电话:worker.perform_async(@user)我的worker:#app/workers/worker.rbclassworkerincludeSidekiq::Workersidekiq_optionsretry:falsedefperform(s_u

ruby-on-rails - 为什么我能在 Heroku 看到这么多 worker ?我如何限制其他员工的访问权限?

当我在Heroku上运行的Rails应用程序上访问resque-web时,我可以看到40多个工作人员:我只有1个resqueworker连接到我的Heroku帐户。这个工作人员处理我所有的队列:resque:envTERM_CHILD=1COUNT=1QUEUE=*bundleexecrakeresque:workers有什么方法可以限制其他人的工作人员干扰我的队列吗?我正在使用Redislab来自Heroku的adon。 最佳答案 由于您的RedisCloud实例受密码保护,因此这些人不太可能是其他人的worker。我敢猜测他们只

python - 如何从另一个程序向 celery 添加任务?

我们在类似守护进程的程序中使用celery和redis作为代理。我们如何将来自另一个程序的任务添加到这个守护进程?有可能吗?编辑:如果描述不够清楚,有两个单独的程序,代码不同,我正在寻找除了从后一个程序导入任务之外的解决方案。 最佳答案 I'mlookingforasolutionotherthanimportingtasksfromthelatterprogram.你运气不好。celery文档提到worker和客户需要拥有相同的软件。因此,您的客户端代码需要导入一个celery任务,并负责在应用程序控制流中调用它。引用资料:Cel

python - flask celery redis 没有返回值

正在尝试学习如何实现celery。我有一个工作示例,我做了一个redis-cli监视器,我看到它获取了值并将其返回给浏览器,但是当我将示例更改为我自己的东西时,我看到它给了我一个key,但是当我尝试查看key的结果,期望它打印“testing123”,它挂起并且redis-cli监视器显示celery任务的无尽“get”。工作...celery=make_celery(app)@celery.task(name="tasks.add")defadd(x,y):returnx+y@app.route("/test")defhello_world(x=16,y=16):x=int(requ

amazon-web-services - AWS 上依赖 Windows EC2 后台 worker 的正确架构

基本上我们将缓存数据保存在Redis上,我们希望每隔X秒将其转储到MongoDB中。我们在Redis上存储了一个排序集,将每个用户的最后一次事件保存为分数,我们希望在一段时间不活动后定期转储用户的最终状态,我们希望确保:我们不会让我们的API服务器不堪重负(这就是它必须在工作实例上运行的原因。数据转储操作非常关键-我们要求这些工作实例具有可扩展性和对故障的高度弹性(并且应该优雅地处理故障)。我们必须确保,如果我们有X台机器,数据将分布在各个实例中,并且我们从Redis中提取的每一项都将恰好处理一次。我想知道部署定期处理数据的EC2Windows实例的最佳架构方法是什么。我曾考虑使用El

redis - celery :如何在撤销后刷新计划任务列表?

我使用以下代码撤销了所有任务。fromcelery.task.controlimportinspectfromcelery.task.controlimportrevokei=inspect()queues=i.scheduled()keys=queues.keys()all_tasks=[]tasks=[]iflen(keys)>0:printkeys[0]all_tasks=queues[keys[0]]fortaskinall_tasks:revoke(task['request']['id'],terminate=True)但是inspect().scheduled()在我撤销

python - 使用 Celery 和 Redis 链接或连接非常大的工作组/任务

我正在开展一个项目,将一些繁重的模拟作业并行化。每次运行大约需要两分钟,占用100%的可用CPU能力,并生成超过100MB的数据。为了执行下一步的模拟,需要将这些结果组合成一个巨大的结果。请注意,这将在高性能系统上运行(目前在具有16GB内存和12核的机器上进行测试,但可能会升级到更大的硬件)我可以使用celery作业组轻松分派(dispatch)大约10个这样的作业,然后将其链接到串联步骤和下一个模拟中。(本质上是celery和弦)但是,我需要能够在这台机器上运行至少20个,最终在更强大的机器上运行40个。似乎Redis不允许结果后端有足够大的对象让我做任何超过13个的事情。我找不到

django - 如何在任务功能运行之前设置 celery 结果后端键?

我在我的Django项目中使用了多个数据库(redis、postgresql)。在celery中,我正在运行一个任务函数,将倒计时参数设置为一周,将结果放入redis结果后端。然后我试图将rediskey保存在postresql表中。如果我在任务函数运行之前设置了redis键,我可以稍后访问redis记录。那么,有没有办法做到这一点?(对不起我的英语) 最佳答案 你能试试这个吗result=add.apply_async(countdown=time_in_seconds)result.id#giveyoutaskid.您现在可以将

redis - Resque - 在 worker 完成工作后得到回应

我正在使用php-resque来了解具体情况,但我想我正在寻找一个概念性的答案,因此php/ruby差异应该不是问题。假设我向Resque添加了一个作业,要求工作进程从MySQL数据库中检索一些数据。发出请求的服务器无法直接访问数据库,因此它使用Resque来发出此请求。如何将数据库响应传递回调用它的脚本?根据我的阅读,工作人员似乎必须将该数据存储在Redis中,然后我的脚本只需要从那里访问它。我想在我将工作排入队列后,我的脚本只是等待工作人员完成,根据它的id跟踪它。这个逻辑合理吗? 最佳答案 立即想到的解决方案是设置web-ho

python - Django Celery 任务队列

我有一个用django制作的应用程序,使用redis和celery来完成一些异步任务。我正在使用celery任务来执行一些存储过程。此SP需要5分钟到30分钟才能完全执行(取决于记录的数量)。一切都很好。但我需要能够多次执行任务。但是现在当我运行任务并且另一个用户也运行任务时,这两个任务是同时执行的。我需要任务进入队列并且只在第一个任务完成时执行。我的设置.py:BROKER_URL='redis://localhost:6379/0'CELERY_IMPORTS=("pc.tasks",)CELERY_ACCEPT_CONTENT=['json']CELERY_TASK_SERIAL