From fefef0738a62d4e55ecc69deb5f1b606e7be7491 Mon Sep 17 00:00:00 2001 From: Rich Atkinson Date: Tue, 23 Apr 2013 16:09:05 +1000 Subject: [PATCH 1/3] it's not OK to stick a picked object into the db, protocol 0 isn't guaranteed to be ASCII, (contradictory to the official docs). Encoding to base64 is necessary in case there are other non-ASCII encodings embedded in the object --- django_ztask/management/commands/ztaskd.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/django_ztask/management/commands/ztaskd.py b/django_ztask/management/commands/ztaskd.py index c15a9c0..565b97f 100644 --- a/django_ztask/management/commands/ztaskd.py +++ b/django_ztask/management/commands/ztaskd.py @@ -1,3 +1,4 @@ +from base64 import b64encode, b64decode from django.core.management.base import BaseCommand from django.utils import autoreload # @@ -57,8 +58,8 @@ def _queue_handler(socket, *args, **kwargs): return task = Task.objects.create( function_name=function_name, - args=pickle.dumps(args), - kwargs=pickle.dumps(kwargs), + args=b64encode(pickle.dumps(args, protocol=pickle.HIGHEST_PROTOCOL)), + kwargs=b64encode(pickle.dumps(kwargs, protocol=pickle.HIGHEST_PROTOCOL)), retry_count=settings.ZTASKD_RETRY_COUNT, next_attempt=time.time() + after ) @@ -96,8 +97,8 @@ def _call_function(self, task_id, function_name=None, args=None, kwargs=None): try: task = Task.objects.get(pk=task_id) function_name = task.function_name - args = pickle.loads(str(task.args)) - kwargs = pickle.loads(str(task.kwargs)) + args = pickle.loads(b64decode(task.args)) + kwargs = pickle.loads(b64decode(task.kwargs)) except Exception, e: self.logger.info('Count not get task with id %s:\n%s' % (task_id, e)) return From f152c1e9cbef1279c5ca1b19daee06b7c4b64dd8 Mon Sep 17 00:00:00 2001 From: Rich Atkinson Date: Thu, 4 Feb 2016 20:23:12 +1100 Subject: [PATCH 2/3] Delete 0001_initial.py --- django_ztask/migrations/0001_initial.py | 45 ------------------------- 1 file changed, 45 deletions(-) delete mode 100644 django_ztask/migrations/0001_initial.py diff --git a/django_ztask/migrations/0001_initial.py b/django_ztask/migrations/0001_initial.py deleted file mode 100644 index e6d2baa..0000000 --- a/django_ztask/migrations/0001_initial.py +++ /dev/null @@ -1,45 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Adding model 'Task' - db.create_table('django_ztask_task', ( - ('uuid', self.gf('django.db.models.fields.CharField')(max_length=36, primary_key=True)), - ('function_name', self.gf('django.db.models.fields.CharField')(max_length=255)), - ('args', self.gf('django.db.models.fields.TextField')()), - ('kwargs', self.gf('django.db.models.fields.TextField')()), - ('retry_count', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('last_exception', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), - ('next_attempt', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)), - ('failed', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), - )) - db.send_create_signal('django_ztask', ['Task']) - - - def backwards(self, orm): - - # Deleting model 'Task' - db.delete_table('django_ztask_task') - - - models = { - 'django_ztask.task': { - 'Meta': {'object_name': 'Task'}, - 'args': ('django.db.models.fields.TextField', [], {}), - 'failed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'function_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'kwargs': ('django.db.models.fields.TextField', [], {}), - 'last_exception': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'next_attempt': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), - 'retry_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'uuid': ('django.db.models.fields.CharField', [], {'max_length': '36', 'primary_key': 'True'}) - } - } - - complete_apps = ['django_ztask'] From 106efd6b098a122b625f4781094bb66bdde286f7 Mon Sep 17 00:00:00 2001 From: Rich Atkinson Date: Thu, 4 Feb 2016 20:23:24 +1100 Subject: [PATCH 3/3] Delete 0002_auto__add_field_task_created.py --- .../0002_auto__add_field_task_created.py | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 django_ztask/migrations/0002_auto__add_field_task_created.py diff --git a/django_ztask/migrations/0002_auto__add_field_task_created.py b/django_ztask/migrations/0002_auto__add_field_task_created.py deleted file mode 100644 index 27c529a..0000000 --- a/django_ztask/migrations/0002_auto__add_field_task_created.py +++ /dev/null @@ -1,36 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Adding field 'Task.created' - db.add_column('django_ztask_task', 'created', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False) - - - def backwards(self, orm): - - # Deleting field 'Task.created' - db.delete_column('django_ztask_task', 'created') - - - models = { - 'django_ztask.task': { - 'Meta': {'object_name': 'Task'}, - 'args': ('django.db.models.fields.TextField', [], {}), - 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'failed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'function_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'kwargs': ('django.db.models.fields.TextField', [], {}), - 'last_exception': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'next_attempt': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), - 'retry_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'uuid': ('django.db.models.fields.CharField', [], {'max_length': '36', 'primary_key': 'True'}) - } - } - - complete_apps = ['django_ztask']