diff --git a/.gitignore b/.gitignore index d2bcfaa..852263c 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ docs/_build # Pytest coverage.xml junit.xml +*celerybeat-schedule* diff --git a/examples/scheduler_example/MANIFEST.in b/examples/scheduler_example/MANIFEST.in new file mode 100644 index 0000000..aeef2f8 --- /dev/null +++ b/examples/scheduler_example/MANIFEST.in @@ -0,0 +1,2 @@ +include *.txt *.ini *.cfg *.rst +recursive-include scheduler_example *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml diff --git a/examples/scheduler_example/README.rst b/examples/scheduler_example/README.rst new file mode 100644 index 0000000..c478b9d --- /dev/null +++ b/examples/scheduler_example/README.rst @@ -0,0 +1,8 @@ +Getting Started +=============================== +Make sure you have a local redis-server running and then do: + +.. code-block:: bash + + $ pip install -e . + $ celery worker -A pyramid_celery.celery_app --ini development.ini -B diff --git a/examples/scheduler_example/development.ini b/examples/scheduler_example/development.ini new file mode 100644 index 0000000..ddc8fa5 --- /dev/null +++ b/examples/scheduler_example/development.ini @@ -0,0 +1,68 @@ +### +# app configuration +# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/environment.html +### + +[app:main] +use = egg:scheduler_example + +pyramid.reload_templates = true +pyramid.debug_authorization = false +pyramid.debug_notfound = false +pyramid.debug_routematch = false +pyramid.default_locale_name = en +pyramid.includes = + pyramid_debugtoolbar + +# By default, the toolbar only appears for clients from IP addresses +# '127.0.0.1' and '::1'. +# debugtoolbar.hosts = 127.0.0.1 ::1 + +### +# wsgi server configuration +### + +[celery] +BROKER_URL = redis://localhost:6379/0 + +[celerybeat:task1] +task = scheduler_example.tasks.get_date +type = integer +schedule = 10 + +[server:main] +use = egg:waitress#main +host = 0.0.0.0 +port = 6543 + +### +# logging configuration +# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/logging.html +### + +[loggers] +keys = root, scheduler_example + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[logger_scheduler_example] +level = DEBUG +handlers = +qualname = scheduler_example + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s diff --git a/examples/scheduler_example/scheduler_example/__init__.py b/examples/scheduler_example/scheduler_example/__init__.py new file mode 100644 index 0000000..739b214 --- /dev/null +++ b/examples/scheduler_example/scheduler_example/__init__.py @@ -0,0 +1,10 @@ +from pyramid.config import Configurator + + +def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + settings['message'] = "The current date is %s" + config = Configurator(settings=settings) + config.scan() + return config.make_wsgi_app() diff --git a/examples/scheduler_example/scheduler_example/tasks.py b/examples/scheduler_example/scheduler_example/tasks.py new file mode 100644 index 0000000..331e2cf --- /dev/null +++ b/examples/scheduler_example/scheduler_example/tasks.py @@ -0,0 +1,12 @@ +from pyramid_celery import celery_app as app +from datetime import datetime +import logging +logger = logging.getLogger(__name__) + + +@app.task +def get_date(*args, **kwargs): + msg = app.conf['PYRAMID_REGISTRY'].settings['message'] + + print(msg % datetime.utcnow()) + logger.info(msg % datetime.utcnow()) diff --git a/examples/scheduler_example/scheduler_example/views.py b/examples/scheduler_example/scheduler_example/views.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/scheduler_example/setup.py b/examples/scheduler_example/setup.py new file mode 100644 index 0000000..e3c99ca --- /dev/null +++ b/examples/scheduler_example/setup.py @@ -0,0 +1,40 @@ +import os + +from setuptools import setup, find_packages + +here = os.path.abspath(os.path.dirname(__file__)) + +with open(os.path.join(here, 'README.rst')) as f: + README = f.read() + +requires = [ + 'pyramid', + 'pyramid_celery', + 'redis', + 'watiress', +] + +setup(name='scheduler_example', + version='0.0', + description='scheduler_example', + long_description=README, + classifiers=[ + "Programming Language :: Python", + "Framework :: Pyramid", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", + ], + author='', + author_email='', + url='', + keywords='web pyramid pylons', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + install_requires=requires, + tests_require=requires, + test_suite="scheduler_example", + entry_points="""\ + [paste.app_factory] + main = scheduler_example:main + """,)