草庐IT

django - Heroku 上的 Redis 连接被拒绝

我正在尝试在Heroku上设置Redis作为Celery的后端。我让它在本地工作,但在Heroku上,我收到此错误(在celery任务完成后):ConnectionError:Error111connectinglocalhost:6379。连接被拒绝。从我从其他答案中可以看出,这表明redis服务器不在线,尽管REDISTOGO_URL似乎配置正确。在settings.py中:REDIS_URL=os.getenv('REDISTOGO_URL','redis://localhost:6379/0')在tasks.py中:fromceleryimportCelerycelery=Ce

django - Heroku 上的 Redis 连接被拒绝

我正在尝试在Heroku上设置Redis作为Celery的后端。我让它在本地工作,但在Heroku上,我收到此错误(在celery任务完成后):ConnectionError:Error111connectinglocalhost:6379。连接被拒绝。从我从其他答案中可以看出,这表明redis服务器不在线,尽管REDISTOGO_URL似乎配置正确。在settings.py中:REDIS_URL=os.getenv('REDISTOGO_URL','redis://localhost:6379/0')在tasks.py中:fromceleryimportCelerycelery=Ce

django - Djcelery 强制使用 'database' 后端,如何正确绕过它?

在我的Django项目中,我根本不使用SQL数据库,我的主要数据存储是MongoDB,通过mongoengine.我想将Celery设置为与Redis一起作为代理和后端。我安装了django-celery-with-redis,安装了Redis(在本地和生产环境中),并尝试在我的settings.py中使用以下内容:BROKER_URL='redis://localhost:6379/0'CELERY_RESULT_BACKEND=BROKER_URLimportdjcelerydjcelery.setup_loader()但是当我运行celery进程并且它收到一个要处理的任务时,当返

django - Djcelery 强制使用 'database' 后端,如何正确绕过它?

在我的Django项目中,我根本不使用SQL数据库,我的主要数据存储是MongoDB,通过mongoengine.我想将Celery设置为与Redis一起作为代理和后端。我安装了django-celery-with-redis,安装了Redis(在本地和生产环境中),并尝试在我的settings.py中使用以下内容:BROKER_URL='redis://localhost:6379/0'CELERY_RESULT_BACKEND=BROKER_URLimportdjcelerydjcelery.setup_loader()但是当我运行celery进程并且它收到一个要处理的任务时,当返

python - 同一个任务执行多次

我有ETA任务被发送到Celery的Redis代理。它是单个celery和redis实例,都在同一台机器上。问题是,任务被多次执行。我见过任务执行了4到11次。鉴于我的ETA在4-11小时之间(在运行时确定),我将可见性超时设置为12小时:BROKER_TRANSPORT_OPTIONS={'visibility_timeout':12*60*60}即便如此,任务仍会执行多次。最初,所讨论的任务不是幂等的,所以我尝试添加数据库检查以使它们成为幂等的。看起来像这样:@app.taskdeffoo(side_effect_action):ifside_effect_action.execu

python - 同一个任务执行多次

我有ETA任务被发送到Celery的Redis代理。它是单个celery和redis实例,都在同一台机器上。问题是,任务被多次执行。我见过任务执行了4到11次。鉴于我的ETA在4-11小时之间(在运行时确定),我将可见性超时设置为12小时:BROKER_TRANSPORT_OPTIONS={'visibility_timeout':12*60*60}即便如此,任务仍会执行多次。最初,所讨论的任务不是幂等的,所以我尝试添加数据库检查以使它们成为幂等的。看起来像这样:@app.taskdeffoo(side_effect_action):ifside_effect_action.execu

python - 重启 celery 会导致重复任务吗?

我在celery中有一个电子邮件任务,预计从现在起10天()。但是,我发现有些人一次收到5-6封重复的电子邮件。我之前遇到过这个问题,因为BROKER_TRANSPORT_OPTIONS设置得太低了。现在我的设置文件中有这个:BROKER_TRANSPORT_OPTIONS={'visibility_timeout':2592000}#30days所以这应该不再是问题了。我只是想知道是否还有其他可能导致它的原因。即重新启动celery。每次我部署新代码时,Celery都会重新启动,而且每周可能发生5次或更多次,所以这是我唯一能想到的事情。有什么想法吗?谢谢。

python - 重启 celery 会导致重复任务吗?

我在celery中有一个电子邮件任务,预计从现在起10天()。但是,我发现有些人一次收到5-6封重复的电子邮件。我之前遇到过这个问题,因为BROKER_TRANSPORT_OPTIONS设置得太低了。现在我的设置文件中有这个:BROKER_TRANSPORT_OPTIONS={'visibility_timeout':2592000}#30days所以这应该不再是问题了。我只是想知道是否还有其他可能导致它的原因。即重新启动celery。每次我部署新代码时,Celery都会重新启动,而且每周可能发生5次或更多次,所以这是我唯一能想到的事情。有什么想法吗?谢谢。

python - 在服务器中为两个 django 应用程序运行两个 celery worker

我有一个服务器,其中有两个Django应用程序正在运行appone、apptwo对他们来说,两个celeryworker是用命令启动的:celeryworker-Aappone-B--loglevel=INFOceleryworker-Aapptwo-B--loglevel=INFO两者都指向同一个BROKER_URL='redis://localhost:6379'redis使用db0和1设置我可以在这两个应用程序的日志中看到在这两个应用程序中配置的任务,这会导致警告和错误。我们能否在django设置中进行配置,使celery独占工作而不会干扰彼此的任务?

python - 在服务器中为两个 django 应用程序运行两个 celery worker

我有一个服务器,其中有两个Django应用程序正在运行appone、apptwo对他们来说,两个celeryworker是用命令启动的:celeryworker-Aappone-B--loglevel=INFOceleryworker-Aapptwo-B--loglevel=INFO两者都指向同一个BROKER_URL='redis://localhost:6379'redis使用db0和1设置我可以在这两个应用程序的日志中看到在这两个应用程序中配置的任务,这会导致警告和错误。我们能否在django设置中进行配置,使celery独占工作而不会干扰彼此的任务?