celeryd.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #!/usr/bin/env python
  2. """celeryd
  3. .. program:: celeryd
  4. .. cmdoption:: -c, --concurrency
  5. Number of child processes processing the queue. The default
  6. is the number of CPUs available on your system.
  7. .. cmdoption:: -f, --logfile
  8. Path to log file. If no logfile is specified, ``stderr`` is used.
  9. .. cmdoption:: -l, --loglevel
  10. Logging level, choose between ``DEBUG``, ``INFO``, ``WARNING``,
  11. ``ERROR``, ``CRITICAL``, or ``FATAL``.
  12. .. cmdoption:: -n, --hostname
  13. Set custom hostname.
  14. .. cmdoption:: -B, --beat
  15. Also run the ``celerybeat`` periodic task scheduler. Please note that
  16. there must only be one instance of this service.
  17. .. cmdoption:: -Q, --queues
  18. List of queues to enable for this worker, separated by comma.
  19. By default all configured queues are enabled.
  20. Example: ``-Q video,image``
  21. .. cmdoption:: -I, --include
  22. Comma separated list of additional modules to import.
  23. Example: -I foo.tasks,bar.tasks
  24. .. cmdoption:: -s, --schedule
  25. Path to the schedule database if running with the ``-B`` option.
  26. Defaults to ``celerybeat-schedule``. The extension ".db" will be
  27. appended to the filename.
  28. .. cmdoption:: -E, --events
  29. Send events that can be captured by monitors like ``celerymon``.
  30. .. cmdoption:: --purge, --discard
  31. Discard all waiting tasks before the daemon is started.
  32. **WARNING**: This is unrecoverable, and the tasks will be
  33. deleted from the messaging server.
  34. .. cmdoption:: --time-limit
  35. Enables a hard time limit (in seconds) for tasks.
  36. .. cmdoption:: --soft-time-limit
  37. Enables a soft time limit (in seconds) for tasks.
  38. .. cmdoption:: --maxtasksperchild
  39. Maximum number of tasks a pool worker can execute before it's
  40. terminated and replaced by a new worker.
  41. """
  42. import multiprocessing
  43. from celery import __version__
  44. from celery.bin.base import Command, Option
  45. class WorkerCommand(Command):
  46. def run(self, *args, **kwargs):
  47. from celery.apps.worker import Worker
  48. kwargs["defaults"] = self.defaults
  49. return Worker(*args, **kwargs).run()
  50. def get_options(self):
  51. conf = self.defaults
  52. return (
  53. Option('-c', '--concurrency',
  54. default=conf.CELERYD_CONCURRENCY,
  55. action="store", dest="concurrency", type="int",
  56. help="Number of child processes processing the queue."),
  57. Option('--purge', '--discard', default=False,
  58. action="store_true", dest="discard",
  59. help="Discard all waiting tasks before the server is"
  60. "started. WARNING: There is no undo operation "
  61. "and the tasks will be deleted."),
  62. Option('-f', '--logfile', default=conf.CELERYD_LOG_FILE,
  63. action="store", dest="logfile",
  64. help="Path to log file."),
  65. Option('-l', '--loglevel', default=conf.CELERYD_LOG_LEVEL,
  66. action="store", dest="loglevel",
  67. help="Choose between DEBUG/INFO/WARNING/ERROR/CRITICAL"),
  68. Option('-n', '--hostname', default=None,
  69. action="store", dest="hostname",
  70. help="Set custom host name. E.g. 'foo.example.com'."),
  71. Option('-B', '--beat', default=False,
  72. action="store_true", dest="run_clockservice",
  73. help="Also run the celerybeat periodic task scheduler. "
  74. "NOTE: Only one instance of celerybeat must be"
  75. "running at any one time."),
  76. Option('-s', '--schedule',
  77. default=conf.CELERYBEAT_SCHEDULE_FILENAME,
  78. action="store", dest="schedule",
  79. help="Path to the schedule database if running with the -B "
  80. "option. The extension '.db' will be appended to the "
  81. "filename. Default: %s" % (
  82. conf.CELERYBEAT_SCHEDULE_FILENAME, )),
  83. Option('-S', '--statedb', default=conf.CELERYD_STATE_DB,
  84. action="store", dest="db",
  85. help="Path to the state database. The extension '.db' will "
  86. "be appended to the filename. Default: %s" % (
  87. conf.CELERYD_STATE_DB, )),
  88. Option('-E', '--events', default=conf.SEND_EVENTS,
  89. action="store_true", dest="events",
  90. help="Send events so the worker can be monitored by "
  91. "celeryev, celerymon and other monitors.."),
  92. Option('--time-limit',
  93. default=conf.CELERYD_TASK_TIME_LIMIT,
  94. action="store", type="int", dest="task_time_limit",
  95. help="Enables a hard time limit (in seconds) for tasks."),
  96. Option('--soft-time-limit',
  97. default=conf.CELERYD_TASK_SOFT_TIME_LIMIT,
  98. action="store", type="int", dest="task_soft_time_limit",
  99. help="Enables a soft time limit (in seconds) for tasks."),
  100. Option('--maxtasksperchild',
  101. default=conf.CELERYD_MAX_TASKS_PER_CHILD,
  102. action="store", type="int", dest="max_tasks_per_child",
  103. help="Maximum number of tasks a pool worker can execute"
  104. "before it's terminated and replaced by a new worker."),
  105. Option('--queues', '-Q', default=[],
  106. action="store", dest="queues",
  107. help="Comma separated list of queues to consume from. "
  108. "By default all configured queues are used. "
  109. "Example: -Q video,image"),
  110. Option('--include', '-I', default=[],
  111. action="store", dest="include",
  112. help="Comma separated list of additional modules to import. "
  113. "Example: -I foo.tasks,bar.tasks"),
  114. )
  115. def main():
  116. multiprocessing.freeze_support()
  117. worker = WorkerCommand()
  118. worker.execute_from_commandline()
  119. if __name__ == "__main__":
  120. main()