我从python中的命令调用celery,要求是从点击库中调用celery和celery beat
celery_config.py
broker_url = "redis://localhost:6379/0"
result_backend = "redis://localhost:6379/0"
task_serializer = "json"
timezone = "Europe/London"
enable_utc = True
broker_transport_options = {
"visibility_timeout": 1,
"fanout_prefix": True,
"fanout_patterns": True,
}
beat_schedule = {
'add-every-30-seconds': {
'task': 'my_app.task_queue.sample',
'schedule': 2.0,
},
}
main.py
from celery import current_app
app.config["task_app"] = current_app._get_current_object()
task_queue.py
app = Celery("task")
app.config_from_object(celery_config)
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(2.0, sample.s(), name='add every 10')
@app.task
def sample():
print("===============================")
print(datetime.now())
print("===============================")
cli.py
@click.command("tasks", help="run this command to start celery task queue")
def tasks():
"""
Runs the celery task queue
"""
from celery.bin import worker
try:
worker = worker.worker(app=app.config.get("task_app"))
worker.run(app="my_app.task_queue")
except Exception as e:
raise e
现在还不清楚如何以类似的方式开始芹菜拍打
我尝试过
kwargs = {"beat": "-s <path>"}
worker.run(app="my_app.task_queue", **kwargs)
如何进行这项工作?谢谢