我正在使用django作为Web应用程序的框架。为了使用celery,我已经安装了django-celery,celery和celer [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()
我解决了这个问题。您可以下载包含将在Windows Server上运行的服务器和客户端exe的redis zip文件。 You can download the file from here
1。只需解压缩文件并运行redis-server.exe文件。
2。然后运行redis-cli.exe类型ping,它将返回PONG。这表明一切运行良好
这很需要。
试图再次运行工人
$ 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.