Commit 9479ce38 authored by Janez K's avatar Janez K

naredu windows queue za matjazeve widgete

parent 0d4f1d26
......@@ -17,6 +17,9 @@ import os
import sys
import site
import djcelery
djcelery.setup_loader()
site.addsitedir('/srv/django-envs/mothra/lib/python2.7/site-packages')
project_path = '/srv/django-projects/mothra'
......
......@@ -171,15 +171,18 @@ INSTALLED_APPS_DEFAULT = (
'picklefield',
'streams',
#'rest_framework',
#'djcelery',
#'kombu.transport.django',
'djcelery',
'kombu.transport.django',
)
INSTALLED_APPS_WORKFLOWS_SUB = ()
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_TASK_SERIALIZER='json'
import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
try:
LOCAL_SETTINGS
......
......@@ -17,6 +17,9 @@ import os
import sys
import site
import djcelery
djcelery.setup_loader()
project_path = '/srv/django-projects/mothra'
if project_path not in sys.path:
sys.path.append(project_path)
......
......@@ -10,5 +10,4 @@ httplib2==0.7.5
wsgiref==0.1.2
unidecode==0.04.13
django-jsonview==0.3.0
feedparser==5.1.3
pyteaser==1.0
django-celery==3.1.9
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -15,6 +15,8 @@ from mothra.settings import USE_CONCURRENCY
if USE_CONCURRENCY:
from workflows.tasks import runWidgetAsync, runForLoopIteration
from workflows.tasks import executeWidgetFunction, executeWidgetProgressBar, executeWidgetStreaming, executeWidgetWithRequest
class WidgetException(Exception):
pass
......@@ -264,6 +266,8 @@ class AbstractWidget(models.Model):
package = models.CharField(max_length=150,blank=True,default='',help_text='Package is the package name. You are encouraged to use packages.')
windows_queue = models.BooleanField(default=False,help_text="This is used for Matjaz Jursic's widgets.")
class Meta:
ordering = ('order','name',)
......@@ -453,11 +457,23 @@ class Widget(models.Model):
input_dict['wsdl']=self.abstract_widget.wsdl
input_dict['wsdl_method']=self.abstract_widget.wsdl_method
if self.abstract_widget.has_progress_bar:
outputs = function_to_call(input_dict,self)
if self.abstract_widget.windows_queue:
t = executeWidgetProgressBar.apply_async([self,input_dict],queue="windows")
outputs = t.wait()
else:
outputs = executeWidgetProgressBar(self,input_dict)
elif self.abstract_widget.is_streaming:
outputs = function_to_call(input_dict,self,None)
if self.abstract_widget.windows_queue:
t = executeWidgetStreaming.apply_async([self,input_dict],queue="windows")
outputs = t.wait()
else:
outputs = function_to_call(input_dict)
outputs = executeWidgetStreaming(self,input_dict)
else:
if self.abstract_widget.windows_queue:
t = executeWidgetFunction.apply_async([self,input_dict],queue="windows")
outputs = t.wait()
else:
outputs = executeWidgetFunction(self,input_dict)
else:
if self.workflow_link.is_for_loop():
self.workflow_link.run_for_loop()
......@@ -638,7 +654,11 @@ class Widget(models.Model):
input_dict[i.variable].append(i.value)
try:
if not self.abstract_widget is None:
outputs = function_to_call(request,input_dict, output_dict)
if self.abstract_widget.windows_queue:
t = executeWidgetWithRequest.apply_async([widget,input_dict,output_dict,request],queue="windows")
outputs = t.wait()
else:
outputs = executeWidgetWithRequest(widget,input_dict,output_dict,request)
else:
self.workflow_link.run()
except:
......
from celery.task import task
import workflows.library
@task()
def add(a,b):
import time
time.sleep(10)
raise Exception("test")
return a+b
@task()
def runForLoopIteration(workflow,iteration):
pass
@task()
def executeWidgetFunction(widget,input_dict):
function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(input_dict)
@task()
def runWidgetAsync(widget):
widget.run(True)
def executeWidgetProgressBar(widget,input_dict):
function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(input_dict,widget)
@task()
def add(x, y):
return x + y
\ No newline at end of file
def executeWidgetStreaming(widget,input_dict):
function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(input_dict,widget,None)
@task()
def executeWidgetWithRequest(widget,input_dict,output_dict,request):
function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(request,input_dict,output_dict)
@task()
def runWidgetAsync(widget):
widget.run(True)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment