草庐IT

python - 使用 redis 和 celery 向所有工作人员广播任务

我试试看:ma​​in.pyimporttasksif__name__=='__main__':result=tasks.add.apply_async(([4,4]),queue='broadcast_tasks')result.ready()value=result.get()print(value)tasks.pyfromceleryimportCeleryfromkombu.commonimportBroadcastapp=Celery('tasks',broker='redis://localhost:6379/0',backend='redis://localhost:63

python - Celery/Redis 任务过期

我正在使用Celery,主管运行工作人员,Redis作为代理,我遇到了一个Celery工作人员明显卡住的问题,使其无法处理更多任务并导致其在Redis中的任务队列被填满直到导致一些内存问题。我在调用任务时尝试设置expires选项,认为这将利用Redis对key过期的支持:some_task.apply_async(args=('foo',),expires=60)但这没有用,当我检查RedisCLI中的相应列表时,它一直在扩展——也许不足为奇,因为它听起来像listexpiryisnotbuilt-infunctionality在Redis中。Celerydocs说到期时间对应于“发

python - 查询任务状态——Celery和redis

好吧,我有一个我认为相对简单的问题,就像我正在用它撞墙一样。我有一个flask应用程序和一个网页,允许您使用celery&redis(broker)在服务器端运行许多脚本。我想做的就是当我开始一个任务时给它一个名字/id(任务将被描绘成客户端的一个按钮)即@app.route('/start_upgrade/')defstart_upgrade(task_name):example_task.delay(1,2,task_name=task_name)然后在任务开始后我想在一个单独的请求中查看任务是否正在运行/等待/完成,最好是;@app.route('/check_upgrade_s

redis - 如果 celery worker 死得很惨,工作会重试吗?

如果工作人员运行的服务器死机,是否有重试celery作业的方法?我不只是指执行作业的子进程,而是整个服务器变得不可用。我尝试使用RabbitMQ和Redis作为代理。在这两种情况下,如果当前正在处理作业,则它会被完全遗忘。当一个worker重新启动时,它甚至不会尝试重新处理作业,看看Rabbit或Redis,它们的队列是空的。结果后端也是空的。看起来worker捕获了消息并假设如果子进程失败它会把它放回去,但如果worker也死了,它就不能把它放回去。(是的,我工作的环境每年都会发生不止一次这样的事情,我不想失去任务) 最佳答案 理

python - 向 rabbitmq 发送 celery 任务消息

我通常将celery与Django一起使用,并在Django中运行共享任务。但对于特定情况,我想在不运行Django或celerybeat的情况下手动将任务队列添加到rabbitmq。是否有任何简单的python脚本或shellcmd可以做到这一点? 最佳答案 您可以使用send_taskmethod将任务排队到任意celery代理。但是,您必须知道应用名称和代理URL,以便您可以将任务发送到正确的位置。fromceleryimportCeleryapp=Celery('app_name',broker='pyamqp://gues

python - 强制 celery 使用 StrictRedis

我突然在celery中遇到以下错误。File"/opt/app-root/lib/python3.6/site-packages/celery/canvas.py",line636,in__call__returnself.apply_async((),{'body':body}ifbodyelse{},**options)File"/opt/app-root/lib/python3.6/site-packages/celery/canvas.py",line631,inapply_asyncparent=_chord(self.tasks,body,args,**options)Fi

amazon-web-services - 将使用Celery和Redis的Flask应用程序部署到AWS:直接使用Elastic Beanstalk还是EC2?

我是Web开发的新手,我编写了一个小的FlaskAPI,该API使用Celery进行消息队列,并使用Redis作为代理。我在本地计算机上使用redis-server启动Redis,使用celery-Aapplication.celeryworker--loglevel=info启动Celery,该应用程序运行正常。但是我无法使其在AWS上工作。现在,我正在docs之后部署该应用程序,但是当我尝试向我的API发送请求时,我得到了内部服务器错误,这可能与Redis和Celery无法正常工作有关。我通过SSH进入EC2实例,但是由于我是新用户,因此找不到解决办法来使该应用程序正常工作。我的问

python - celery 没有看到 redis 代理

我正在尝试将Celery与Redis结合使用。这是我的celery.py文件:from__future__importabsolute_importfromceleryimportCelerycelery=Celery(include=['tasks.chatterbox'])#importceleryconfigfilecelery.config_from_object('celeryconfig')if__name__=='__main__':celery.start()这是我的celeryconfig.py文件:BROKER_URL='redis://localhost:6379

python - Celery/Redis 一些(很多)消息被丢弃

我使用带有Redis(v.2.2.2)的Celery(2.2.4)作为我的消息代理。知道什么会导致某些(大多数)消息随机且不一致地丢失吗? 最佳答案 看起来合乎逻辑的唯一原因是您超出了redis实例使用的内存。所以一些消息被丢弃(使用LRU策略(?))。 关于python-Celery/Redis一些(很多)消息被丢弃,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5225899

django - Redis + Node.js + Socket.io + Django/Celery 设置中的奇怪行为。断开连接的套接字仍然接收消息

我遇到了一个奇怪的问题,我自己无法解决。我建立了一个设置,通过Django/Celery周期性任务发送JSON序列化消息。此任务通过Redis与node.js服务器通信。Node.js通过socket.io处理与网络浏览器的通信。Django/Celery任务@periodic_task(run_every=crontab())#everyminutedefprocess_channels():r=redis.StrictRedis(host='localhost',port=6379,db=0)foriinxrange(1,21):#1..20data_dict={}data_dic