def put(self, request, format=None): serializer = SnippetSerializer(snippet, data=request.data) if serializer.is_valid(): serializer.save(owner=request.user) client = BeanstalkClient() client.call('api.evaluate') return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def handle(self, *args, **options): client = BeanstalkClient() print "Asynchronous Beanstalk Call" print "-------------------------" print "Notice how this app exits, while the workers still work on the tasks." for i in range(4): client.call('beanstalk_example.background_counting', '5')
def handle_noargs(self, **options): client = BeanstalkClient() print "Asynchronous Beanstalk Call" print "-------------------------" print "Notice how this app exits, while the workers still work on the tasks." for i in range(4): client.call( 'beanstalk_example.background_counting', '5' )
def post(self, request, format=None): if request.user.snippets.all().count() > 0: return Response( 'User already has a submitted code snippet. Use PUT to update', status=status.HTTP_400_BAD_REQUEST) serializer = SnippetSerializer(data=request.data) if serializer.is_valid(): serializer.save(owner=request.user) client = BeanstalkClient() client.call('api.evaluate') return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def _kickBuriedJobs(self, tube): buriedJobs = JobRecord.objects.filter(status=JobStatus.BURIED, tube__istartswith=tube).only('id') beanstalk = BeanstalkClient() if buriedJobs : for job in buriedJobs : job.status = JobStatus.READY job.save() success = beanstalk.kick(len(buriedJobs), tube) if not success : transaction.rollback() else : transaction.commit()
def put(self, request, format=None): try: snippet = request.user.snippets.first() except User.DoesNotExist: return Response( 'User has no code snippet submitted. Use POST to submit', status=status.HTTP_400_BAD_REQUEST) serializer = SnippetSerializer(snippet, data=request.data) if serializer.is_valid(): serializer.save(owner=request.user) client = BeanstalkClient() client.call('api.evaluate') return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def _cancelJobs(self, tube): jobs = JobRecord.objects.filter(status=JobStatus.READY, tube__istartswith=tube).only('jid', 'uuid') beanstalk = BeanstalkClient() if jobs : for job in jobs : job.status = JobStatus.CANCELLED job.save() existingJob = beanstalk.getJob(job.jid) uuid = self.__get_uuid__(existingJob) success = True if uuid == job.uuid : success = beanstalk.delete(job.jid) if not success : transaction.rollback() else : transaction.commit()
def get_for_user(username): try: user = UserProfile.objects.get(lfmusername=username) client = BeanstalkClient() response = get_page(username=username) info = response['artists']['@attr'] handle_resp(user,response) for page in range(2,int(info.get('totalPages'))+1): job_data = {'uname':username,'page':page} client.call('rb.processpage',json.dumps(job_data)) user.processed = datetime.datetime.now() user.save() except Exception, e: if settings.DEBUG: raise f=open(settings.LOG_DIRECTORY+"getforuser","a") f.write(str(e)+'\n') f.close()
def get_for_user(username): try: user = UserProfile.objects.get(lfmusername=username) client = BeanstalkClient() response = get_page(username=username) info = response['artists']['@attr'] handle_resp(user, response) for page in range(2, int(info.get('totalPages')) + 1): job_data = {'uname': username, 'page': page} client.call('rb.processpage', json.dumps(job_data)) user.processed = datetime.datetime.now() user.save() except Exception, e: if settings.DEBUG: raise f = open(settings.LOG_DIRECTORY + "getforuser", "a") f.write(str(e) + '\n') f.close()
def _rescheduleReadiedJobs(self, tube): logger = logging.getLogger('beanstalk_worker.work') logger.info("Rescheduling all jobs in tubes that starts with: " + tube) pageSize = 50 pageNumber = 1 while True : start = ( pageNumber - 1 ) * pageSize end = pageNumber * pageSize jobs = JobRecord.objects.filter(status=JobStatus.READY, tube__istartswith=tube)[start:end] if not jobs or len(jobs) == 0 : break for job in jobs : try : #simply just creates a new beanstalk job, workers will never run a job #again if it has already been finished successfully. beanstalkClient = BeanstalkClient() newJID = beanstalkClient.call(job.tube, job.body) job.jid = newJID job.save() except Exception, ex : logger.exception("Failed to schedule the new job: " + str(ex)) pageNumber += 1
def __shutdown(self): beanstalkClient = BeanstalkClient() jsonEncoder = JSONEncoder() args = {'timestamp' : time.time()} pid = beanstalkClient.call("shutdown", jsonEncoder.encode(args), priority=0) #high pri job
from django.conf import settings from lfm.models import Artist, UserTrack, UserProfile, Track, Image, UserTrackWeek from django_beanstalkd import BeanstalkClient from django.core.exceptions import ObjectDoesNotExist from unidecode.unidecoder import Unidecoder try: import json except ImportError: import simplejson as json import urllib2 API = settings.API CLIENT = BeanstalkClient() DECODER_RING = Unidecoder() def get_for_user(username, week=False): print 'Going to get for user %s, week: %s'%(username, week) try: user = UserProfile.objects.get(lfm_username=username) response = get_page(username=username, page=1, week=week) has_tracks = process_page(user, response, week=week) #this returns False when the user has no tracks if has_tracks: key = week and 'toptracks' or 'tracks' for page in range(2, int(response[key]['@attr'].get('totalPages'))+1): job_data = {'uname':username, 'page':page, 'week':week} CLIENT.call('lfm.process_track_page', json.dumps(job_data))
from django.db import reset_queries, close_connection from django.conf import settings from lfm.models import Artist, UserTrack, UserProfile, Track, Image, UserTrackWeek from django_beanstalkd import BeanstalkClient from django.core.exceptions import ObjectDoesNotExist from unidecode.unidecoder import Unidecoder try: import json except ImportError: import simplejson as json import urllib2 API = settings.API CLIENT = BeanstalkClient() DECODER_RING = Unidecoder() def get_for_user(username, week=False): print 'Going to get for user %s, week: %s' % (username, week) try: user = UserProfile.objects.get(lfm_username=username) response = get_page(username=username, page=1, week=week) has_tracks = process_page( user, response, week=week) #this returns False when the user has no tracks if has_tracks: key = week and 'toptracks' or 'tracks'