Celery Beat Windows Simple Example (not with Django)
Question: I'm really struggling to set up a periodic task using Celery Beat on Windows 7
(unfortunately that is what I'm dealing with at the moment). The app that will
be using celery is written with CherryPy, so the Django libraries are not
relevant here. All I'm looking for is a simple example of how to start the
Celery Beat Process in the background. The FAQ section says the following, but
I haven't been able to actually do it yet:

Windows

The -B / –beat option to worker doesn’t work?¶

Answer: That’s right. Run celery beat and celery worker as separate services
instead.

My project layout is as follows:

    
    
    proj/
        __init__.py (empty)
        celery.py
        celery_schedule.py
        celery_settings.py (these work
        tasks.py
    

celery.py:

    
    
    from __future__ import absolute_import
    
    from celery import Celery
    from proj import celery_settings
    from proj import celery_schedule
    
    app = Celery(
        'proj',
        broker=celery_settings.BROKER_URL,
        backend=celery_settings.CELERY_RESULT_BACKEND,
        include=['proj.tasks']
    )
    
    # Optional configuration, see the application user guide.
    app.conf.update(
         CELERY_TASK_RESULT_EXPIRES=3600,
         CELERYBEAT_SCHEDULE=celery_schedule.CELERYBEAT_SCHEDULE
    )
    
    if __name__ == '__main__':
        app.start()
    

tasks.py

    
    
    from __future__ import absolute_import
    
    from proj.celery import app
    
    
    @app.task
    def add(x, y):
        return x + y
    

celery_schedule.py

    
    
     from datetime import timedelta
    
     CELERYBEAT_SCHEDULE = {
         'add-every-30-seconds': {
              'task': 'tasks.add',
              'schedule': timedelta(seconds=3),
              'args': (16, 16)
         },
     }
    

Running "celery worker --app=proj -l info" from the command line (from the
parent directory of "proj") starts the worker thread just fine and I can
execute the add task from the Python terminal. However, I just can't figure
out how to start the beat service. Obviously the syntax is probably incorrect
as well because I haven't gotten past the missing --beat option.


Answer: Just start another process via a new terminal window, make sure you are in the
correct directory and execute the command celery beat (no '--' needed
preceding the beat keyword).

If this does not solve your issue, rename your celery_schedule.py file to
celeryconfig.py and include it in your celery.py file as:
app.config_from_object('celeryconfig') right above your **name** == main

then spawn a new celery beat process: celery beat

