我需要在特定时间在Django中执行一些后台任务,所以我在@periodic_task
文件中使用tasks.py
。
基本上我有两个任务:
@periodic_task(run_every=(crontab(day_of_month='3-11', hour=11, minute=32)), name="invoice_simulation", ignore_result=False)
def invoice_simulation():
print('---- task started-----')
# Do something
@periodic_task(run_every=(crontab(minute='*')), name="print_time_worker", ignore_result=False)
def print_time():
print('Current time is: ', datetime.now())
在我的本地,一切都运行正常但是当我将代码推送到服务器时,只有print_time()
正常工作且invoice_simulation
无法在服务器上运行。
我的代码部署在Heroku
部署芹菜登录服务器之后看起来像......
2018-01-03T11:30:06.648963+00:00 app[worker.1]:
2018-01-03T11:30:06.648975+00:00 app[worker.1]: -------------- celery@73b10f01-6293-42ad-a0f5-867e4b39f43d v3.1.18 (Cipater)
2018-01-03T11:30:06.648976+00:00 app[worker.1]: ---- **** -----
2018-01-03T11:30:06.648977+00:00 app[worker.1]: --- * *** * -- Linux-3.13.0-133-generic-x86_64-with-debian-jessie-sid
2018-01-03T11:30:06.648977+00:00 app[worker.1]: -- * - **** ---
2018-01-03T11:30:06.648978+00:00 app[worker.1]: - ** ---------- [config]
2018-01-03T11:30:06.648979+00:00 app[worker.1]: - ** ---------- .> app: __main__:0x7f8608f52358
2018-01-03T11:30:06.648980+00:00 app[worker.1]: - ** ---------- .> transport: redis://h:**@ec2-****.compute-1.amazonaws.com:17709//
2018-01-03T11:30:06.648981+00:00 app[worker.1]: - ** ---------- .> results: redis://h:*@ec2-****.compute-1.amazonaws.com:17709
2018-01-03T11:30:06.648981+00:00 app[worker.1]: - *** --- * --- .> concurrency: 8 (prefork)
2018-01-03T11:30:06.648982+00:00 app[worker.1]: -- ******* ----
2018-01-03T11:30:06.648983+00:00 app[worker.1]: --- ***** ----- [queues]
2018-01-03T11:30:06.648983+00:00 app[worker.1]: -------------- .> celery exchange=celery(direct) key=celery
2018-01-03T11:30:06.648984+00:00 app[worker.1]:
2018-01-03T11:30:06.648984+00:00 app[worker.1]:
2018-01-03T11:30:06.648985+00:00 app[worker.1]: [tasks]
2018-01-03T11:30:06.648986+00:00 app[worker.1]: . djcelery_email_send_multiple
2018-01-03T11:30:06.648986+00:00 app[worker.1]: . invoice_simulation
2018-01-03T11:30:06.648987+00:00 app[worker.1]: . mdn_core_engine.celery.debug_task
2018-01-03T11:30:06.648987+00:00 app[worker.1]: . print_time_worker
2018-01-03T11:30:06.648991+00:00 app[worker.1]:
2018-01-03T11:30:06.722749+00:00 app[worker.1]: [2018-01-03 11:30:06,722: INFO/Beat] beat: Starting...
2018-01-03T11:30:06.763365+00:00 app[worker.1]: [2018-01-03 11:30:06,751: INFO/MainProcess] Connected to redis://h:**@ec2-****.compute-1.amazonaws.com:17709//
2018-01-03T11:30:06.832074+00:00 app[worker.1]: [2018-01-03 11:30:06,831: INFO/MainProcess] mingle: searching for neighbors
2018-01-03T11:30:07.859195+00:00 app[worker.1]: [2018-01-03 11:30:07,858: INFO/MainProcess] mingle: all alone
在heroku上,worker config是:
celery -A mdn_core_engine worker -B --loglevel=info