我有一个Django项目,并设置了Celery + RabbitMQ来异步执行繁重的任务。当我调用任务时,RabbitMQ管理员显示任务,Celery打印任务已收到,但任务未执行。
下面是任务的代码:
@app.task
def dummy_task():
print("I'm Here")
User.objects.create(username="User1")
return "User1 Created!"
在这个视图中我向celery 发送了任务:
def task_view(request):
result = dummy_task.delay()
return render(request, 'display_progress.html', context={'task_id': result.task_id})
我使用以下命令运行Celery:
$ celery -A proj worker -l info --concurrency=2 --without-gossip
这是运行Celery的输出:
--------------celery @台式机-8 CHJOEG v5.2.7(黎明合唱)
2016年12月26日,北京,北京,北京,北京,北京,北京,北京
****----
--------- [配置]
*---------- .〉应用程序:项目:0x 23322847880
-------- .〉运输工具:amqp://导航ID:@本地主机:5672//
***-------- .〉结果:
-- * --- .〉并发性:2(预派生)-----.〉任务事件:OFF(启用-E以监视此工作进程中的任务)----------------------- [队列]。〉celery 交换=celery (直接)键=celery
[任务] .项目.celery .调试任务.实体匹配.任务.创建和学习计算机.实体匹配.任务.虚拟任务
[2022年8月22日10:10:04,068:[navid:**@127.0.0.1:5672//2022-08-22 10:10:04,096:00,000]已连接至amqp://www.example.com网站,请输入以下信息:INFO/主进程]混合:搜索邻居[2022-08-22 10:10:04,334:[self.run2022-08-22 10:10:04,335:05]在一个新的应用程序中,一个新的应用程序可以在一个新的应用程序中运行。[2022-08-22 10:10:05,134:05,145]在一个新的进程中,一个新的进程被调用。INFO/主进程]混合:[2022-08-22 10:10:05,142:2000]我是一个很好的朋友。警告/主进程] C:\用户\Navid\PycharmProjects\项目\venv\库\站点包\celery \修复\django.py:203:使用者警告:使用设置.调试会导致内存泄漏,切勿在生产环境中使用此设置!warnings.warn('''使用设置.调试会导致内存泄漏
[2022-08-22 10:10:05,142:10:10:05,我的天啊![2022- 08 -22 10:10:05,143:00 - 2022-08- 21:05:05:00 - 08:02:05:00 - 08:02:05:00 - 08:02:05:00 - 08:02:00 - 08:02:02:00 - 08:02:02:00 - 08:02:00 - 08:02:02:00 - 08:02:02:00 -08:02:02:02:02:02:02:02:02:02:02:02:02:02:02:02:02 [2022-08-22 10:10:05,144:000]已接收到任务实体匹配的任务。虚拟任务[2022-08-22 10:11:36,384:2012 -08- 21:2012 -08- 21:21:21:21:21]已接收到任务实体匹配的任务。信息/主进程]已收到任务项目celery 调试任务[af 3d 633 f-7 b 9a-4441-b375- 9 ce 217 a40 ab 3]
但不会打印“I 'm Here”,也不会创建User 1。
RabbitMQ显示队列中有3条“未确认”消息:
1条答案
按热度按时间vbkedwbf1#
你没有提供足够的信息,虽然我认为你有你的工人池的问题。
尝试添加
在run命令的末尾。它将像
但是在生产环境中,我建议使用gevent作为池。