在django上启动Celery worker时出错,错误10061无法建立连接,因为目标计算机主动拒绝了它

问题描述 投票:0回答:1

我正在使用django作为Web应用程序的框架。为了使用celery,我已经安装了django-celeryceleryceler [redis]。当它尝试启动芹菜工作者时,显示错误

无法连接到redis:// localhost:6379/0:错误10061连接到localhost:6379。无法建立连接,因为目标计算机主动拒绝了该连接。6.00秒后重试...

我正在使用Windows笔记本电脑。如何启动redis:// localhost:6379/0服务器。


This is the result of running the worker

$ celery worker -A myemail.celery -l info

 -------------- celery@LAPTOP-ERVJPN6C v4.3.0 (rhubarb)
---- **** -----
--- * ***  * -- Windows-10-10.0.18362-SP0 2019-12-30 19:35:13
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         myemail:0x38d56d0
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . email.tasks.send_confirmation_email_to_subscriber

[2019-12-30 19:35:14,763: INFO/SpawnPoolWorker-1] child process 17836 calling self.run()
[2019-12-30 19:35:14,782: INFO/SpawnPoolWorker-4] child process 19512 calling self.run()
[2019-12-30 19:35:14,782: INFO/SpawnPoolWorker-6] child process 6816 calling self.run()
[2019-12-30 19:35:14,789: INFO/SpawnPoolWorker-8] child process 12316 calling self.run()
[2019-12-30 19:35:14,793: INFO/SpawnPoolWorker-2] child process 15580 calling self.run()
[2019-12-30 19:35:14,799: INFO/SpawnPoolWorker-5] child process 18588 calling self.run()
[2019-12-30 19:35:14,801: INFO/SpawnPoolWorker-3] child process 14108 calling self.run()
[2019-12-30 19:35:14,802: INFO/SpawnPoolWorker-7] child process 8944 calling self.run()
[2019-12-30 19:35:18,230: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379/0: Error 10061 connecting to localhost:6379. No connection could be made because the target machine actively refused it..
Trying again in 2.00 seconds...

[2019-12-30 19:35:24,252: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379/0: Error 10061 connecting to localhost:6379. No connection could be made because the target machine actively refused it..
Trying again in 4.00 seconds...

[2019-12-30 19:35:32,289: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379/0: Error 10061 connecting to localhost:6379. No connection could be made because the target machine actively refused it..
Trying again in 6.00 seconds...

设置文件

import os
from dotenv import load_dotenv
# // Setting up env variables \\

project_folder = os.path.expanduser("~\Projects\workbench\Python\Python workbench\src")
load_dotenv(os.path.join(project_folder, '.env'))

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.getenv("SECRET_KEY")

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = [ 
    'localhost',
]


# Application definition

INSTALLED_APPS = [
    'myemailapp',
    'user',
    'crispy_forms',
    'markdownify',
    'django_celery_results',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'myemail.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'myemail.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

CRISPY_TEMPLATE_PACK = 'bootstrap4'

# // User acctount credentials \\

LOGIN_URL = 'user:login'
LOGIN_REDIRECT_URL = 'myemailapp:myemailapp'
LOGOUT_REDIRECT_URL = 'user:login'

# // email-configs \\

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''

MAILING_LIST_FORM_EMAIL = "[email protected]"
MAILING_LIST_LINK_DOMAIN = "http://localhost:8000"

# // Celery configurations \\

CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'django-db'

celery.py文件

import os
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myemail.settings')

app = Celery('myemail')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
django redis celery django-celery
1个回答
0
投票

我解决了这个问题。您可以下载包含将在Windows Server上运行的服务器和客户端exe的redis zip文件。 You can download the file from here

1。只需解压缩文件并运行redis-server.exe文件。

this is the output of running the redis-server

2。然后运行redis-cli.exe类型ping,它将返回PONG。这表明一切运行良好

result of running the redis-cli.exe file

这很需要。

试图再次运行工人


$ celery worker -A myemail.celery -l info

 -------------- celery@LAPTOP-ERVJPN6C v4.3.0 (rhubarb)
---- **** -----
--- * ***  * -- Windows-10-10.0.18362-SP0 2019-12-31 21:16:15
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         mailape:0x4275770
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . myemail.tasks.build_subscriber_messages_for_message
  . myemail.tasks.send_confirmation_email_to_subscriber

[2019-12-31 21:16:15,550: INFO/MainProcess] Connected to redis://localhost:6379/0
[2019-12-31 21:16:15,674: INFO/MainProcess] mingle: searching for neighbors
[2019-12-31 21:16:16,059: INFO/SpawnPoolWorker-3] child process 3424 calling self.run()
[2019-12-31 21:16:16,082: INFO/SpawnPoolWorker-1] child process 12424 calling self.run()
[2019-12-31 21:16:16,083: INFO/SpawnPoolWorker-8] child process 6588 calling self.run()
[2019-12-31 21:16:16,084: INFO/SpawnPoolWorker-5] child process 12500 calling self.run()
[2019-12-31 21:16:16,095: INFO/SpawnPoolWorker-4] child process 11624 calling self.run()
[2019-12-31 21:16:16,097: INFO/SpawnPoolWorker-2] child process 15152 calling self.run()
[2019-12-31 21:16:16,107: INFO/SpawnPoolWorker-7] child process 14932 calling self.run()
[2019-12-31 21:16:16,131: INFO/SpawnPoolWorker-6] child process 15224 calling self.run()
[2019-12-31 21:16:16,760: INFO/MainProcess] mingle: all alone
[2019-12-31 21:16:16,793: WARNING/MainProcess] c:\users\atom\projects\workbench\python\python workbench\myemail\env\lib\site-packages\celery\fixups\django.py:202: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments!
  warnings.warn('Using settings.DEBUG leads to a memory leak, never '
[2019-12-31 21:16:16,813: INFO/MainProcess] celery@LAPTOP-ERVJPN6C ready.

© www.soinside.com 2019 - 2024. All rights reserved.