Commit fbf03849 authored by J. Fernando Sánchez's avatar J. Fernando Sánchez
Browse files

Replaced gevent with threading

* Replaced gevent (testing)
* Trying the slim python image (1/3 of previous size)
parent b072121e
Dockerfile-3.4 Dockerfile-3.5
\ No newline at end of file \ No newline at end of file
from python:2.7-onbuild from python:2.7-slim
WORKDIR /usr/src/app
ADD requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
ADD . /usr/src/app/
RUN pip install . RUN pip install .
ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"] ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"]
from python:3.4-onbuild from python:3.4-slim
WORKDIR /usr/src/app
ADD requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
ADD . /usr/src/app/
RUN pip install . RUN pip install .
ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"] ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"]
from python:3.5-slim
WORKDIR /usr/src/app
ADD requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
ADD . /usr/src/app/
RUN pip install .
ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"]
from python:{{PYVERSION}}-onbuild from python:{{PYVERSION}}-slim
WORKDIR /usr/src/app
ADD requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
ADD . /usr/src/app/
RUN pip install . RUN pip install .
ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"] ENTRYPOINT ["python", "-m", "senpy", "-f", ".", "--host", "0.0.0.0"]
...@@ -7,4 +7,4 @@ graft senpy/plugins ...@@ -7,4 +7,4 @@ graft senpy/plugins
graft senpy/schemas graft senpy/schemas
graft senpy/templates graft senpy/templates
graft senpy/static graft senpy/static
graft img graft img
\ No newline at end of file
PYVERSIONS=3.4 2.7 PYVERSIONS=3.5 3.4 2.7
PYMAIN=$(firstword $(PYVERSIONS)) PYMAIN=$(firstword $(PYVERSIONS))
NAME=senpy NAME=senpy
REPO=gsiupm REPO=gsiupm
...@@ -16,6 +16,7 @@ dev: ...@@ -16,6 +16,7 @@ dev:
pre-commit install pre-commit install
dockerfiles: $(addprefix Dockerfile-,$(PYVERSIONS)) dockerfiles: $(addprefix Dockerfile-,$(PYVERSIONS))
@unlink Dockerfile >/dev/null
ln -s Dockerfile-$(PYMAIN) Dockerfile ln -s Dockerfile-$(PYMAIN) Dockerfile
Dockerfile-%: Dockerfile.template Dockerfile-%: Dockerfile.template
...@@ -35,7 +36,7 @@ test: $(addprefix test-,$(PYMAIN)) ...@@ -35,7 +36,7 @@ test: $(addprefix test-,$(PYMAIN))
testall: $(addprefix test-,$(PYVERSIONS)) testall: $(addprefix test-,$(PYVERSIONS))
debug-%: build-debug-% debug-%:
docker run --rm -w /usr/src/app/ -v $$PWD:/usr/src/app --entrypoint=/bin/bash -ti $(NAME)-debug ; docker run --rm -w /usr/src/app/ -v $$PWD:/usr/src/app --entrypoint=/bin/bash -ti $(NAME)-debug ;
debug: debug-$(PYMAIN) debug: debug-$(PYMAIN)
......
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
""" """
from future import standard_library from future import standard_library
standard_library.install_aliases() standard_library.install_aliases()
import gevent
from gevent import monkey
monkey.patch_all()
from .plugins import SentimentPlugin from .plugins import SentimentPlugin
from .models import Error from .models import Error
...@@ -12,7 +9,8 @@ from .blueprints import api_blueprint, demo_blueprint ...@@ -12,7 +9,8 @@ from .blueprints import api_blueprint, demo_blueprint
from .api import API_PARAMS, NIF_PARAMS, parse_params from .api import API_PARAMS, NIF_PARAMS, parse_params
from git import Repo, InvalidGitRepositoryError from git import Repo, InvalidGitRepositoryError
from functools import partial
from threading import Thread
import os import os
import fnmatch import fnmatch
...@@ -154,20 +152,23 @@ class Senpy(object): ...@@ -154,20 +152,23 @@ class Senpy(object):
logger.info("Activating plugin: {}".format(plugin.name)) logger.info("Activating plugin: {}".format(plugin.name))
def act(): def act():
success = False
try: try:
plugin.activate() plugin.activate()
logger.info("Plugin activated: {}".format(plugin.name)) msg = "Plugin activated: {}".format(plugin.name)
logger.info(msg)
success = True
self._set_active_plugin(plugin_name, success)
except Exception as ex: except Exception as ex:
logger.error("Error activating plugin {}: {}".format( msg = "Error activating plugin {} - {} : \n\t{}".format(
plugin.name, ex)) plugin.name, ex, ex.format_exc())
logger.error("Trace: {}".format(traceback.format_exc())) logger.error(msg)
raise Error(msg)
th = gevent.spawn(act)
th.link_value(partial(self._set_active_plugin, plugin_name, True))
if sync: if sync:
th.join() act()
else: else:
return th th = Thread(target=act)
th.start()
def deactivate_plugin(self, plugin_name, sync=False): def deactivate_plugin(self, plugin_name, sync=False):
try: try:
...@@ -176,6 +177,8 @@ class Senpy(object): ...@@ -176,6 +177,8 @@ class Senpy(object):
raise Error( raise Error(
message="Plugin not found: {}".format(plugin_name), status=404) message="Plugin not found: {}".format(plugin_name), status=404)
self._set_active_plugin(plugin_name, False)
def deact(): def deact():
try: try:
plugin.deactivate() plugin.deactivate()
...@@ -185,12 +188,11 @@ class Senpy(object): ...@@ -185,12 +188,11 @@ class Senpy(object):
plugin.name, ex)) plugin.name, ex))
logger.error("Trace: {}".format(traceback.format_exc())) logger.error("Trace: {}".format(traceback.format_exc()))
th = gevent.spawn(deact)
th.link_value(partial(self._set_active_plugin, plugin_name, False))
if sync: if sync:
th.join() deact()
else: else:
return th th = Thread(target=deact)
th.start()
def reload_plugin(self, name): def reload_plugin(self, name):
logger.debug("Reloading {}".format(name)) logger.debug("Reloading {}".format(name))
......
...@@ -23,10 +23,9 @@ setup( ...@@ -23,10 +23,9 @@ setup(
name='senpy', name='senpy',
packages=['senpy'], # this must be the same as the name above packages=['senpy'], # this must be the same as the name above
version=__version__, version=__version__,
description=''' description=('A sentiment analysis server implementation. '
A sentiment analysis server implementation. Designed to be \ 'Designed to be extensible, so new algorithms '
extendable, so new algorithms and sources can be used. 'and sources can be used.'),
''',
author='J. Fernando Sanchez', author='J. Fernando Sanchez',
author_email='balkian@gmail.com', author_email='balkian@gmail.com',
url='https://github.com/gsi-upm/senpy', # use the URL to the github repo url='https://github.com/gsi-upm/senpy', # use the URL to the github repo
......
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