celery integration
This commit is contained in:
		
							parent
							
								
									54e1bce190
								
							
						
					
					
						commit
						633497be6c
					
				|  | @ -15,6 +15,8 @@ fi | |||
| 
 | ||||
| export DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_USER | ||||
| 
 | ||||
| export CELERY_BROKER_URL=$REDIS_URL/0 | ||||
| 
 | ||||
| 
 | ||||
| function postgres_ready(){ | ||||
| python << END | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ FROM nginx:latest | |||
| ADD nginx.conf /etc/nginx/nginx.conf | ||||
| 
 | ||||
| 
 | ||||
| # installs the `ps` command in the nginx image | ||||
| RUN apt-get update && apt-get install -y procps | ||||
| 
 | ||||
| ADD start.sh /start.sh | ||||
| #ADD nginx-secure.conf /etc/nginx/nginx-secure.conf | ||||
| #ADD dhparams.pem /etc/ssl/private/dhparams.pem | ||||
|  |  | |||
|  | @ -14,7 +14,6 @@ import os | |||
| import time | ||||
| import environ | ||||
| 
 | ||||
| 
 | ||||
| # from spirit.settings import * | ||||
| ROOT_DIR = environ.Path(__file__) - 3  # (mhackspace/config/settings/common.py - 3 = mhackspace/) | ||||
| APPS_DIR = ROOT_DIR.path('mhackspace') | ||||
|  | @ -341,6 +340,17 @@ LOGIN_URL = 'account_login' | |||
| 
 | ||||
| # SLUGLIFIER | ||||
| AUTOSLUG_SLUGIFY_FUNCTION = 'slugify.slugify' | ||||
| 
 | ||||
| ########## CELERY | ||||
| CELERY_BROKER_URL = env('CELERY_BROKER_URL', default='django://') | ||||
| if CELERY_BROKER_URL == 'django://': | ||||
|     CELERY_RESULT_BACKEND = 'redis://' | ||||
| else: | ||||
|     CELERY_RESULT_BACKEND = CELERY_BROKER_URL | ||||
| CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' | ||||
| INSTALLED_APPS += ('django_celery_results','django_celery_beat',) | ||||
| ########## END CELERY | ||||
| 
 | ||||
| # django-compressor | ||||
| # ------------------------------------------------------------------------------ | ||||
| INSTALLED_APPS += ("compressor", 'sass_processor',) | ||||
|  |  | |||
|  | @ -83,6 +83,11 @@ INSTALLED_APPS += ('django_extensions', ) | |||
| # ------------------------------------------------------------------------------ | ||||
| TEST_RUNNER = 'django.test.runner.DiscoverRunner' | ||||
| 
 | ||||
| ########## CELERY | ||||
| # In development, all tasks will be executed locally by blocking until the task returns | ||||
| CELERY_ALWAYS_EAGER = True | ||||
| ########## END CELERY | ||||
| 
 | ||||
| # Your local stuff: Below this line define 3rd party library settings | ||||
| # ------------------------------------------------------------------------------ | ||||
| CAPTCHA = { | ||||
|  |  | |||
|  | @ -184,7 +184,7 @@ LOGGING = { | |||
|     }, | ||||
|     'handlers': { | ||||
|         'mail_admins': { | ||||
|             'level': 'ERROR', | ||||
|             'level': 'DEBUG', | ||||
|             'filters': ['require_debug_false'], | ||||
|             'class': 'django.utils.log.AdminEmailHandler' | ||||
|         }, | ||||
|  |  | |||
|  | @ -185,7 +185,7 @@ LOGGING = { | |||
|     }, | ||||
|     'handlers': { | ||||
|         'mail_admins': { | ||||
|             'level': 'ERROR', | ||||
|             'level': 'DEBUG', | ||||
|             'filters': ['require_debug_false'], | ||||
|             'class': 'django.utils.log.AdminEmailHandler' | ||||
|         }, | ||||
|  |  | |||
							
								
								
									
										35
									
								
								dev.yml
								
								
								
								
							
							
						
						
									
										35
									
								
								dev.yml
								
								
								
								
							|  | @ -10,8 +10,7 @@ services: | |||
|     volumes: | ||||
|       - postgres_data_dev:/var/lib/postgresql/data | ||||
|       - postgres_backup_dev:/backups | ||||
|     environment: | ||||
|       - POSTGRES_USER=mhackspace | ||||
|     env_file: .env | ||||
| 
 | ||||
|   django: | ||||
|     build: | ||||
|  | @ -21,9 +20,6 @@ services: | |||
|     depends_on: | ||||
|       - postgres | ||||
|     env_file: .env | ||||
|     # environment: | ||||
|     #   - POSTGRES_USER=mhackspace | ||||
|     #   - USE_DOCKER=yes | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     ports: | ||||
|  | @ -42,5 +38,30 @@ services: | |||
|     command: npm install | ||||
|     volumes: | ||||
|       - ./:/usr/src/app | ||||
|   # redis: | ||||
|   #   image: redis:latest | ||||
|   redis: | ||||
|     image: redis:latest | ||||
| 
 | ||||
|   celeryworker: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp worker -l INFO | ||||
| 
 | ||||
|   celerybeat: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp beat -l debug  | ||||
| 
 | ||||
|  |  | |||
|  | @ -75,6 +75,6 @@ services: | |||
| #      - TERM=xterm | ||||
| 
 | ||||
| 
 | ||||
|   # redis: | ||||
|   #   image: redis:latest | ||||
|   redis: | ||||
|     image: redis:latest | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										11
									
								
								env.example
								
								
								
								
							
							
						
						
									
										11
									
								
								env.example
								
								
								
								
							|  | @ -1,11 +1,16 @@ | |||
| #rename me to .env, and change per environment, .env should not be commited contains | ||||
| #sensitive settings | ||||
| 
 | ||||
| #for dev only | ||||
| USE_DOCKER_DEBUG=yes | ||||
| 
 | ||||
| # PostgreSQL | ||||
| POSTGRES_PASSWORD=mysecretpass | ||||
| POSTGRES_USER=postgresuser | ||||
| POSTGRES_USER=mhackspace | ||||
| 
 | ||||
| # General settings | ||||
| DJANGO_ADMIN_URL= | ||||
| DJANGO_SETTINGS_MODULE=config.settings.production | ||||
| DJANGO_ADMIN_URL=admin | ||||
| DJANGO_SETTINGS_MODULE=config.settings.local | ||||
| DJANGO_SECRET_KEY=iud%k99yw!e+z+c12uatugbn=&lsdyd(t_byk9)@dp@lj6*c*n | ||||
| DJANGO_ALLOWED_HOSTS=.maidstone-hackspace.org.uk | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										27
									
								
								live.yml
								
								
								
								
							
							
						
						
									
										27
									
								
								live.yml
								
								
								
								
							|  | @ -37,6 +37,29 @@ services: | |||
|     volumes: | ||||
|       - ./:/usr/src/app | ||||
| 
 | ||||
|   # redis: | ||||
|   #   image: redis:latest | ||||
|   redis: | ||||
|     image: redis:latest | ||||
| 
 | ||||
|   celeryworker: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp worker -l INFO | ||||
| 
 | ||||
|   celerybeat: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp beat -l INFO | ||||
|  |  | |||
|  | @ -0,0 +1,5 @@ | |||
| from __future__ import absolute_import, unicode_literals | ||||
| 
 | ||||
| from mhackspace.celeryapp import app as celery_app | ||||
| 
 | ||||
| __all__ = ['celery_app'] | ||||
|  | @ -0,0 +1,16 @@ | |||
| from celery import shared_task | ||||
| 
 | ||||
| 
 | ||||
| @shared_task | ||||
| def update_homepage_feeds(): | ||||
|     pass | ||||
|     # import_feeds() | ||||
| 
 | ||||
| # @task(bind=True) | ||||
| # @app.on_after_configure.connect | ||||
| # def setup_periodic_tasks(sender, **kwargs): | ||||
| #     # Executes every Monday morning at 7:30 a.m. | ||||
| #     sender.add_periodic_task( | ||||
| #         crontab(hour=4, minute=0), | ||||
| #         update_homepage_feeds.s(), | ||||
| #     ) | ||||
|  | @ -0,0 +1,22 @@ | |||
| from __future__ import absolute_import | ||||
| import os | ||||
| from celery import Celery | ||||
| from celery.schedules import crontab | ||||
| # from django.apps import apps, AppConfig | ||||
| 
 | ||||
| # if not settings.configured: | ||||
|     # set the default Django settings module for the 'celery' program. | ||||
|     # ;os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')  # pragma: no cover | ||||
| 
 | ||||
| os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local') | ||||
| 
 | ||||
| from django.conf import settings | ||||
| app = Celery('mhackspace') | ||||
| # app.config_from_object(settings) | ||||
| # app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) | ||||
| app.config_from_object('django.conf:settings', namespace='CELERY') | ||||
| app.autodiscover_tasks(lambda: ['mhackspace.base']) | ||||
| 
 | ||||
| @app.task(bind=True) | ||||
| def debug_task(self): | ||||
|     print('Request: {0!r}'.format(self.request))  # pragma: no cover | ||||
|  | @ -43,7 +43,6 @@ class TestPaymentGatewaysGocardless(TestCase): | |||
|         self.assertEqual(result.get('reference'), '01') | ||||
|         self.assertEqual(result.get('success'), 'success') | ||||
| 
 | ||||
|     # @patch('mhackspace.subscriptions.payments.gocardless.request.requests.get', autospec=True) | ||||
|     @patch('mhackspace.subscriptions.payments.gocardless.client.subscription', autospec=True) | ||||
|     @patch('mhackspace.subscriptions.payments.gocardless.client.confirm_resource', autospec=True) | ||||
|     def test_confirm_subscription_callback(self, mock_confirm, mock_subscription): | ||||
|  |  | |||
|  | @ -0,0 +1,25 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| # Generated by Django 1.11.3 on 2017-08-13 15:57 | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations | ||||
| import stdimage.models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('users', '0003_merge_20170226_0844'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.RemoveField( | ||||
|             model_name='user', | ||||
|             name='image', | ||||
|         ), | ||||
|         migrations.AddField( | ||||
|             model_name='user', | ||||
|             name='_image', | ||||
|             field=stdimage.models.StdImageField(blank=True, db_column='image', null=True, upload_to='avatars/'), | ||||
|         ), | ||||
|     ] | ||||
|  | @ -67,5 +67,9 @@ draceditor==1.1.8 | |||
| django-djconfig | ||||
| django-haystack | ||||
| git+https://github.com/nitely/Spirit.git | ||||
| # git+https://github.com/olymk2/django-xforwardedfor-middleware.git | ||||
| django-xforwardedfor-middleware==2.0 | ||||
| 
 | ||||
| # Application queue celery | ||||
| celery==4.1 | ||||
| django-celery-results | ||||
| django-celery-beat | ||||
|  |  | |||
							
								
								
									
										27
									
								
								stage.yml
								
								
								
								
							
							
						
						
									
										27
									
								
								stage.yml
								
								
								
								
							|  | @ -37,6 +37,29 @@ services: | |||
|     volumes: | ||||
|       - ./:/usr/src/app | ||||
| 
 | ||||
|   # redis: | ||||
|   #   image: redis:latest | ||||
|   redis: | ||||
|     image: redis:latest | ||||
| 
 | ||||
|   celeryworker: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp worker -l INFO | ||||
| 
 | ||||
|   celerybeat: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: ./compose/django/Dockerfile | ||||
|     env_file: .env | ||||
|     volumes: | ||||
|       - .:/app | ||||
|     depends_on: | ||||
|       - postgres | ||||
|       - redis | ||||
|     command: celery -A mhackspace.celeryapp beat -l INFO | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue