草庐IT

python - 具有多个装饰器的 celery 任务不会自动注册任务名称

我有一个看起来像这样的任务frommybasetask_moduleimportMyBaseTask@task(base=MyBaseTask)@my_custom_decoratordefmy_task(*args,**kwargs):pass我的基本任务是这样的fromceleryimporttask,TaskclassMyBaseTask(Task):abstract=Truedefault_retry_delay=10max_retries=3acks_late=True我遇到的问题是celeryworker正在用名称注册任务'mybasetask_module.__inner

python - 轻量级通知技术

我需要在django中开发一个实时的最近事件提要(使用AJAX长轮询),我想知道服务器端的最佳策略是什么。伪代码:defrecent_activity_post_save():notify_view()[intheview]whilenotnew_activity():sleep(1)returnHttpResponse(new_activity())首先想到的是每秒查询一次数据库。不可行。其他选项:使用缓存作为通知服务使用专门的工具,如Celery(我宁愿不这样做,因为它看起来有点矫枉过正)去这里最好的方法是什么? 最佳答案 我建

python - 如何监控 celery 中的队列健康状况

我有以下设置:具有100个工作器的通用工作器池具有50个工作器的高优先级工作器池我使用如此大的数字是因为我的任务大部分时间都在等待超时很长的I/O(执行可能需要长达20秒才能响应的HTTP请求)使用RabbitMQ作为代理我已经使用init.dscripts将celeryd设置为守护进程来自celery'dgithub,具有以下参数:CELERYD_OPTS="--time-limit=600-c:low_p100-c:high_p50-Q:low_plow_priority_queue_name-Q:high_phigh_priority_queue_name"我的问题是,有时队列似

python - 如何推迟执行 Celery 任务?

我有一个小脚本,可以将任务排入队列进行处理。该脚本进行大量数据库查询以获取应排队的项目。我面临的问题是,celeryworker一旦被脚本排队就开始接收任务。这是正确的,这也是celery应该工作的方式,但这通常会导致我的脚本和celeryworker之间出现死锁。有没有一种方法可以将脚本中的所有任务排入队列,但延迟执行直到脚本完成或直到固定的时间延迟?我在celery或django-celery的文档中找不到这个。这可能吗?目前,作为一种快速修复,我考虑过将所有要处理的项目添加到一个列表中,当我的脚本执行完所有查询后,我可以简单地遍历该列表并将任务排入队列。也许这可以解决问题,但是当

python - celery 任务和自定义装饰器

我正在使用django和celery(django-celery)开发一个项目。我们的团队决定将所有数据访问代码包装在(app-name)/manager.py中(而不是像django那样包装到管理器中),并让代码进入(app-name)/task.py只处理用celery组装和执行任务(所以我们在这一层没有djangoORM依赖)。在我的manager.py中,我有这样的东西:defget_tag(tag_name):ctype=ContentType.objects.get_for_model(Photo)try:tag=Tag.objects.get(name=tag_name)

python - 如何使用 Celery 守护进程自动重新加载任务模块?

我正在使用Fabric部署一个Celery代理(运行RabbitMQ)和多个Celeryworker,其中celeryd通过supervisor守护。我一辈子都想不出如何在不重启服务器的情况下重新加载tasks.py模块。/etc/supervisor/conf.d/celeryd.conf[program:celeryd]directory=/fab-mrv/celerydenvironment=[RABBITMQcrendentialshere]command=xvfb-runceleryd--loglevel=INFO--autoreloadautostart=trueautor

python - 你应该在哪里更新 celery 设置?在远程 worker 或发件人?

您应该在哪里更新celery设置?在远程工作人员还是发件人?例如,我有一个使用Django和Celery的API。API通过代理(RabbitMQ)将远程作业发送给我的远程工作人员。工作人员正在运行python脚本(不使用Django),有时这些工作会产生子任务。我已经在双方(发件人和工作人员)上创建了celery设置,即他们都需要设置BROKER_URL。但是,假设我想添加设置CELERY_ACKS_LATE=True,我应该将此设置添加到哪一端?每个远程worker或发送者(API)?API和远程worker都连接到同一个Broker,每个都以不同的方式启动celery。API通过

python - 你应该在哪里更新 celery 设置?在远程 worker 或发件人?

您应该在哪里更新celery设置?在远程工作人员还是发件人?例如,我有一个使用Django和Celery的API。API通过代理(RabbitMQ)将远程作业发送给我的远程工作人员。工作人员正在运行python脚本(不使用Django),有时这些工作会产生子任务。我已经在双方(发件人和工作人员)上创建了celery设置,即他们都需要设置BROKER_URL。但是,假设我想添加设置CELERY_ACKS_LATE=True,我应该将此设置添加到哪一端?每个远程worker或发送者(API)?API和远程worker都连接到同一个Broker,每个都以不同的方式启动celery。API通过

用于运行异步请求的 Python Celery 与线程库

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我正在运行一个解析大量数据的python方法。由于时间密集,我想在单独的线程上异步运行它,以便用户仍然可以访问网站/用户界面。如果用户退出站点,使用“fromthreadingimportthread”模块的线程会终止还是会继续在服务器上运行?对于这样的事情,使用Celery与简单地使用线程模块相比有什么优势?

用于运行异步请求的 Python Celery 与线程库

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我正在运行一个解析大量数据的python方法。由于时间密集,我想在单独的线程上异步运行它,以便用户仍然可以访问网站/用户界面。如果用户退出站点,使用“fromthreadingimportthread”模块的线程会终止还是会继续在服务器上运行?对于这样的事情,使用Celery与简单地使用线程模块相比有什么优势?