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 DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_USER | ||||||
| 
 | 
 | ||||||
|  | export CELERY_BROKER_URL=$REDIS_URL/0 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| function postgres_ready(){ | function postgres_ready(){ | ||||||
| python << END | python << END | ||||||
|  |  | ||||||
|  | @ -2,6 +2,9 @@ FROM nginx:latest | ||||||
| ADD nginx.conf /etc/nginx/nginx.conf | 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 start.sh /start.sh | ||||||
| #ADD nginx-secure.conf /etc/nginx/nginx-secure.conf | #ADD nginx-secure.conf /etc/nginx/nginx-secure.conf | ||||||
| #ADD dhparams.pem /etc/ssl/private/dhparams.pem | #ADD dhparams.pem /etc/ssl/private/dhparams.pem | ||||||
|  |  | ||||||
|  | @ -14,7 +14,6 @@ import os | ||||||
| import time | import time | ||||||
| import environ | import environ | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # from spirit.settings import * | # from spirit.settings import * | ||||||
| ROOT_DIR = environ.Path(__file__) - 3  # (mhackspace/config/settings/common.py - 3 = mhackspace/) | ROOT_DIR = environ.Path(__file__) - 3  # (mhackspace/config/settings/common.py - 3 = mhackspace/) | ||||||
| APPS_DIR = ROOT_DIR.path('mhackspace') | APPS_DIR = ROOT_DIR.path('mhackspace') | ||||||
|  | @ -341,6 +340,17 @@ LOGIN_URL = 'account_login' | ||||||
| 
 | 
 | ||||||
| # SLUGLIFIER | # SLUGLIFIER | ||||||
| AUTOSLUG_SLUGIFY_FUNCTION = 'slugify.slugify' | 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 | # django-compressor | ||||||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||||||
| INSTALLED_APPS += ("compressor", 'sass_processor',) | INSTALLED_APPS += ("compressor", 'sass_processor',) | ||||||
|  |  | ||||||
|  | @ -83,6 +83,11 @@ INSTALLED_APPS += ('django_extensions', ) | ||||||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||||||
| TEST_RUNNER = 'django.test.runner.DiscoverRunner' | 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 | # Your local stuff: Below this line define 3rd party library settings | ||||||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||||||
| CAPTCHA = { | CAPTCHA = { | ||||||
|  |  | ||||||
|  | @ -184,7 +184,7 @@ LOGGING = { | ||||||
|     }, |     }, | ||||||
|     'handlers': { |     'handlers': { | ||||||
|         'mail_admins': { |         'mail_admins': { | ||||||
|             'level': 'ERROR', |             'level': 'DEBUG', | ||||||
|             'filters': ['require_debug_false'], |             'filters': ['require_debug_false'], | ||||||
|             'class': 'django.utils.log.AdminEmailHandler' |             'class': 'django.utils.log.AdminEmailHandler' | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -185,7 +185,7 @@ LOGGING = { | ||||||
|     }, |     }, | ||||||
|     'handlers': { |     'handlers': { | ||||||
|         'mail_admins': { |         'mail_admins': { | ||||||
|             'level': 'ERROR', |             'level': 'DEBUG', | ||||||
|             'filters': ['require_debug_false'], |             'filters': ['require_debug_false'], | ||||||
|             'class': 'django.utils.log.AdminEmailHandler' |             'class': 'django.utils.log.AdminEmailHandler' | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								dev.yml
								
								
								
								
							
							
						
						
									
										35
									
								
								dev.yml
								
								
								
								
							|  | @ -10,8 +10,7 @@ services: | ||||||
|     volumes: |     volumes: | ||||||
|       - postgres_data_dev:/var/lib/postgresql/data |       - postgres_data_dev:/var/lib/postgresql/data | ||||||
|       - postgres_backup_dev:/backups |       - postgres_backup_dev:/backups | ||||||
|     environment: |     env_file: .env | ||||||
|       - POSTGRES_USER=mhackspace |  | ||||||
| 
 | 
 | ||||||
|   django: |   django: | ||||||
|     build: |     build: | ||||||
|  | @ -21,9 +20,6 @@ services: | ||||||
|     depends_on: |     depends_on: | ||||||
|       - postgres |       - postgres | ||||||
|     env_file: .env |     env_file: .env | ||||||
|     # environment: |  | ||||||
|     #   - POSTGRES_USER=mhackspace |  | ||||||
|     #   - USE_DOCKER=yes |  | ||||||
|     volumes: |     volumes: | ||||||
|       - .:/app |       - .:/app | ||||||
|     ports: |     ports: | ||||||
|  | @ -42,5 +38,30 @@ services: | ||||||
|     command: npm install |     command: npm install | ||||||
|     volumes: |     volumes: | ||||||
|       - ./:/usr/src/app |       - ./:/usr/src/app | ||||||
|   # redis: |   redis: | ||||||
|   #   image: redis:latest |     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 | #      - TERM=xterm | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   # redis: |   redis: | ||||||
|   #   image: redis:latest |     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 | # PostgreSQL | ||||||
| POSTGRES_PASSWORD=mysecretpass | POSTGRES_PASSWORD=mysecretpass | ||||||
| POSTGRES_USER=postgresuser | POSTGRES_USER=mhackspace | ||||||
| 
 | 
 | ||||||
| # General settings | # General settings | ||||||
| DJANGO_ADMIN_URL= | DJANGO_ADMIN_URL=admin | ||||||
| DJANGO_SETTINGS_MODULE=config.settings.production | DJANGO_SETTINGS_MODULE=config.settings.local | ||||||
| DJANGO_SECRET_KEY=iud%k99yw!e+z+c12uatugbn=&lsdyd(t_byk9)@dp@lj6*c*n | DJANGO_SECRET_KEY=iud%k99yw!e+z+c12uatugbn=&lsdyd(t_byk9)@dp@lj6*c*n | ||||||
| DJANGO_ALLOWED_HOSTS=.maidstone-hackspace.org.uk | DJANGO_ALLOWED_HOSTS=.maidstone-hackspace.org.uk | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								live.yml
								
								
								
								
							
							
						
						
									
										27
									
								
								live.yml
								
								
								
								
							|  | @ -37,6 +37,29 @@ services: | ||||||
|     volumes: |     volumes: | ||||||
|       - ./:/usr/src/app |       - ./:/usr/src/app | ||||||
| 
 | 
 | ||||||
|   # redis: |   redis: | ||||||
|   #   image: redis:latest |     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('reference'), '01') | ||||||
|         self.assertEqual(result.get('success'), 'success') |         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.subscription', autospec=True) | ||||||
|     @patch('mhackspace.subscriptions.payments.gocardless.client.confirm_resource', autospec=True) |     @patch('mhackspace.subscriptions.payments.gocardless.client.confirm_resource', autospec=True) | ||||||
|     def test_confirm_subscription_callback(self, mock_confirm, mock_subscription): |     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-djconfig | ||||||
| django-haystack | django-haystack | ||||||
| git+https://github.com/nitely/Spirit.git | git+https://github.com/nitely/Spirit.git | ||||||
| # git+https://github.com/olymk2/django-xforwardedfor-middleware.git |  | ||||||
| django-xforwardedfor-middleware==2.0 | 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: |     volumes: | ||||||
|       - ./:/usr/src/app |       - ./:/usr/src/app | ||||||
| 
 | 
 | ||||||
|   # redis: |   redis: | ||||||
|   #   image: redis:latest |     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