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

naredu windows queue za matjazeve widgete

parent 0d4f1d26
...@@ -17,6 +17,9 @@ import os ...@@ -17,6 +17,9 @@ import os
import sys import sys
import site import site
import djcelery
djcelery.setup_loader()
site.addsitedir('/srv/django-envs/mothra/lib/python2.7/site-packages') site.addsitedir('/srv/django-envs/mothra/lib/python2.7/site-packages')
project_path = '/srv/django-projects/mothra' project_path = '/srv/django-projects/mothra'
......
...@@ -171,15 +171,18 @@ INSTALLED_APPS_DEFAULT = ( ...@@ -171,15 +171,18 @@ INSTALLED_APPS_DEFAULT = (
'picklefield', 'picklefield',
'streams', 'streams',
#'rest_framework', #'rest_framework',
#'djcelery', 'djcelery',
#'kombu.transport.django', 'kombu.transport.django',
) )
INSTALLED_APPS_WORKFLOWS_SUB = () INSTALLED_APPS_WORKFLOWS_SUB = ()
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend' CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_TASK_SERIALIZER='json' import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
try: try:
LOCAL_SETTINGS LOCAL_SETTINGS
......
...@@ -17,6 +17,9 @@ import os ...@@ -17,6 +17,9 @@ import os
import sys import sys
import site import site
import djcelery
djcelery.setup_loader()
project_path = '/srv/django-projects/mothra' project_path = '/srv/django-projects/mothra'
if project_path not in sys.path: if project_path not in sys.path:
sys.path.append(project_path) sys.path.append(project_path)
......
...@@ -10,5 +10,4 @@ httplib2==0.7.5 ...@@ -10,5 +10,4 @@ httplib2==0.7.5
wsgiref==0.1.2 wsgiref==0.1.2
unidecode==0.04.13 unidecode==0.04.13
django-jsonview==0.3.0 django-jsonview==0.3.0
feedparser==5.1.3 django-celery==3.1.9
pyteaser==1.0
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -15,6 +15,8 @@ from mothra.settings import USE_CONCURRENCY ...@@ -15,6 +15,8 @@ from mothra.settings import USE_CONCURRENCY
if USE_CONCURRENCY: if USE_CONCURRENCY:
from workflows.tasks import runWidgetAsync, runForLoopIteration from workflows.tasks import runWidgetAsync, runForLoopIteration
from workflows.tasks import executeWidgetFunction, executeWidgetProgressBar, executeWidgetStreaming, executeWidgetWithRequest
class WidgetException(Exception): class WidgetException(Exception):
pass pass
...@@ -264,6 +266,8 @@ class AbstractWidget(models.Model): ...@@ -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.') 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: class Meta:
ordering = ('order','name',) ordering = ('order','name',)
...@@ -453,11 +457,23 @@ class Widget(models.Model): ...@@ -453,11 +457,23 @@ class Widget(models.Model):
input_dict['wsdl']=self.abstract_widget.wsdl input_dict['wsdl']=self.abstract_widget.wsdl
input_dict['wsdl_method']=self.abstract_widget.wsdl_method input_dict['wsdl_method']=self.abstract_widget.wsdl_method
if self.abstract_widget.has_progress_bar: 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: 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 = executeWidgetStreaming(self,input_dict)
else: else:
outputs = function_to_call(input_dict) 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: else:
if self.workflow_link.is_for_loop(): if self.workflow_link.is_for_loop():
self.workflow_link.run_for_loop() self.workflow_link.run_for_loop()
...@@ -638,7 +654,11 @@ class Widget(models.Model): ...@@ -638,7 +654,11 @@ class Widget(models.Model):
input_dict[i.variable].append(i.value) input_dict[i.variable].append(i.value)
try: try:
if not self.abstract_widget is None: 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: else:
self.workflow_link.run() self.workflow_link.run()
except: except:
......
from celery.task import task 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() @task()
def runForLoopIteration(workflow,iteration): def runForLoopIteration(workflow,iteration):
pass pass
@task()
def executeWidgetFunction(widget,input_dict):
function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(input_dict)
@task() @task()
def runWidgetAsync(widget): def executeWidgetProgressBar(widget,input_dict):
widget.run(True) function_to_call = getattr(workflows.library,widget.abstract_widget.action)
return function_to_call(input_dict,widget)
@task() @task()
def add(x, y): def executeWidgetStreaming(widget,input_dict):
return x + y function_to_call = getattr(workflows.library,widget.abstract_widget.action)
\ No newline at end of file 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