Beispiel #1
0
 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'
            )
Beispiel #4
0
    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()
Beispiel #6
0
    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()
Beispiel #8
0
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'