草庐IT

celery_worker

全部标签

python - 如何杀死多进程中的所有 Pool worker?

我想停止一个worker的所有线程。我有一个有10个worker的线程池:defmyfunction(i):print(i)if(i==20):sys.exit()p=multiprocessing.Pool(10,init_worker)foriinrange(100):p.apply_async(myfunction,(i,))我的程序不会停止,其他进程会继续工作,直到完成所有100次迭代。我想从调用sys.exit()的线程内部完全停止池。目前的编写方式只会停止调用sys.exit()的worker。 最佳答案 这没有按您预期

python - 在同一台服务器上运行多个 celery 实例

我想在同一台机器上运行两个celery实例。一个用于我的应用程序的“A”版本,另一个用于“B”版本。我有两个实例,我是这样开始的:(env1)/home/me/firstapp$celery-Aapp.tasksworker--configceleryconfig(env2)/home/me/secondapp$celery-Aapp.tasksworker-nCarrot--configceleryconfig在每个应用程序的tasks.py中,我创建了一个这样的celery实例:celery=Celery('tasks',backend='amqp',broker='amqp://

python - 如何列出 celery 中的排队项目?

我在UbuntuEC2节点上有一个Django项目,我一直使用它来使用Celery设置异步。我正在关注http://michal.karzynski.pl/blog/2014/05/18/setting-up-an-asynchronous-task-queue-for-django-using-celery-redis/连同文档。我已经能够在命令行上完成一项基本任务,使用:(env1)ubuntu@ip-172-31-22-65:~/projects/tp$celery--app=myproject.celery:appworker--loglevel=INFO我刚刚意识到,我的队列

python - 从数据库中断中恢复 Celery

我在Fedora机器上运行Celeryd/RabbitMQ,与MySQL通信数据库在一个单独的盒子上。我注意到,在极少数情况下,如果连接到MySQL数据库时甚至出现最轻微的问题(即使是几秒钟),celeryd会因错误而崩溃:OperationalError:(2003,"Can'tconnecttoMySQLserveron'mydatabasedomain'(111)")即使数据库再次可用,也无法重新连接。目前,我不得不手动重启celeryd服务来获取celery再次运行。有没有更优雅和自动的方式从这些类型的事件中恢复?celery有什么特点吗只是安静地等待,记录Operationa

python - Gunicorn 在多处理进程和 worker 之间共享内存

我有一个python应用程序,它使用字典作为多个进程之间的共享内存:frommultiprocessingimportManagermanager=Manager()shared_dict=manager.dict()RESTAPI是使用Flask实现的。在使用pywsgi或简单地Flask.run初始化Flask服务器时,一切正常。我决定加入混合gunicorn。现在,当我从任何工作人员访问这个共享字典时(即使只有一个工作人员正在运行)我得到错误:message=connection.recv_bytes(256)#rejectlargemessageIOError:[Errno35

python - Worker 启动,然后关闭。没有错误

我在启动celery任务时遇到问题。当您在本地运行以下命令时celery-Acodebaseworker--loglevel=debug--beat我得到以下响应/local/lib/python2.7/site-packages/twisted/internet/endpoints.py:30:DeprecationWarning:twisted.internet.interfaces.IStreamClientEndpointStringParserwasdeprecatedinTwisted14.0.0:ThisinterfacehasbeensupersededbyIStrea

梳理 Web Worker 及实战场景

前言有一些前端技术点,即使以前用过,但没有自己动手归纳总结过,许久还是要回过头来还是需要重新梳理。于是,本文就来梳理一下WebWorker。为什么需要WebWorker由于JavaScript语言采用的是单线程,同一时刻只能做一件事,如果有多个同步计算任务执行,则在这段同步计算逻辑执行完之前,它下方的代码不会执行,从而造成了阻塞,用户的交互也可能无响应。但如果把这段同步计算逻辑放到WebWorker执行,在这段逻辑计算运行期间依然可以执行它下方的代码,用户的操作也可以响应了。WebWorker是什么HTML5提供并规范了WebWorker这样一套API,它允许一段JavaScript程序运行在

python - celery 的过期选项不起作用

我正在玩Celery,我正在尝试使用CELERYBEAT_SCHEDULER执行周期性任务。这是我的配置:CELERY_TIMEZONE='Europe/Kiev'CELERYBEAT_SCHEDULE={'run-task-every-5-seconds':{'task':'tasks.run_every_five_seconds','schedule':timedelta(seconds=5),'options':{'expires':10,}},}#thetask@app.task()defrun_every_five_seconds():return'5secondspasse

python - 我将什么参数传递给 celery 的 get_task_logger() 函数?

celery3.xdocsonlogging建议像这样设置任务记录器:fromcelery.utils.logimportget_task_loggerlogger=get_task_logger(__name__)当我这样做时,CELERYD_TASK_LOG_FORMAT被忽略,日志语句使用CELERYD_LOG_FORMAT代替,我无法使用%(task_name)s和%(task_id)s。我的任务在我的应用myapp的模块tasks中。因此,__name__是myapp.tasks。我认为问题出在celery/utils/log.py中的这些行:defget_task_logg

python - Django 中所有 Celery worker/内存缓存的全局可访问对象

我有非常标准的Django+Rabbitmq+Celery设置,有1个Celery任务和5个worker。任务将相同(我简化了一点)大文件(~100MB)异步上传到多个远程PC。一切都以使用大量内存为代价运行良好,因为每个任务/工作人员都将那个大文件单独加载到内存中。我想做的是拥有某种缓存,所有任务都可以访问,即只加载一次文件。基于locmem的Django缓存将是完美的,但正如文档所说:“每个进程都有自己的私有(private)缓存实例”,我需要所有工作人员都可以访问此缓存。尝试使用#2129820中描述的Celery信号,但这不是我需要的。所以问题是:有没有一种方法可以在Celer