python - 芹菜多次执行任务
问题描述
我有一个芹菜任务如下:
@celery_app_site24x7.task(queue='site24x7')
def createWebsiteMonitoring(**kwargs):
""" Celery Task to create or update website Moniroting """
time.sleep(100)
site24x7Instance = Business_api.thirdpartyFactory.instantiate(
"site24x7")
# site24x7Instance.login()
return site24x7Instance.createWebsiteMonitoring(**kwargs)
问题是我的任务是由多个工人 Fork POOL 运行的:
+++++++
[2019-01-23 05:40:59,674: INFO/ForkPoolWorker-3] 任务 celery_tasks.site24x7.createWebsiteMonitoring[a6eeff3d-fa01-4f2e-9921-849435c9b902] 在 128.61932249739766s: '2798732004'中成功
[2019-01-23 05:49:32,565: INFO/ForkPoolWorker-2] 任务 celery_tasks.site24x7.createWebsiteMonitoring[a6eeff3d-fa01-4f2e-9921-849435c9b902] 成功于 127.42566008213907s: '279853'200038755
+++++++
因此,同一任务正在运行多次。
另一方面,工作人员日志中有一些错误,如下所示:
redis.exceptions.ConnectionError:从套接字读取时出错:('连接被服务器关闭。',)
[2019-01-23 06:58:01,453: WARNING/MainProcess] 恢复 15 条未确认的消息
[2019-01-23 06:58:01,641: INFO/MainProcess] 连接到 redis://46.19.177.13:6379/10
一段时间:
[2019-01-23 05:58:19,791:警告/MainProcess] 消费者:与代理的连接丢失。正在尝试重新建立连接...
我的代码有问题吗?为什么同一个任务要运行两次?
解决方案
推荐阅读
- angularjs - AngularJS ng-value 和 ng-model 不能一起工作
- oracle - 如何在存储过程中将数据库链接作为变量传递
- wordpress - 导入未发布的可变产品会损失价格
- c++ - 无法将 std::lower_bound 返回值分配给 vector::iterator
- python - Python Intel MKL 致命错误:无法加载 mkl_intel_thread.dll
- python-3.x - 我们必须在一个 1000 位数字中找到最大的产品,一次取 13 个相邻的数字....但我没有得到真正的答案
- java - 添加带有构造双数据错误的双数据提取
- flask - 如何部署没有端口号的烧瓶项目?在同一台服务器上托管多个烧瓶项目的标准方法是什么?
- python - 我可以导入一个包含我编写导入语句的 python 文件的模块吗?
- struct - 如何将特征泛型类型链接到已实现类型中的某些其他元素