ydf0509/funboost

funboost mysql

xmlgrg opened this issue · 19 comments

我不打算用 celery,因为他没办法和mysql完美的结合,我打算测试一下你这个 产品

你用mysql做消息队列吗是想?

有这个想法,因为不想在公司的机器上 安装其它的 消息队列,本身定时任务也就只有2个,主要是为了把定时任务和django结合

可以的,选peewe中间件就好了

测试案例:

image

报错:
2022-08-08 12:18:06 - _WorkItem - "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\concurrent_pool\custom_threadpool_executor.py:73" - run - ERROR - 函数 _run 中发生错误,错误原因是 <class 'TypeError'> inner() missing 1 required positional argument: 'self'
Traceback (most recent call last):
File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\concurrent_pool\custom_threadpool_executor.py", line 71, in run
result = self.fn(*self.args, **self.kwargs)
File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\consumers\base_consumer.py", line 667, in _run
self._confirm_consume(kw)
File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\consumers\peewee_conusmer.py", line 28, in _confirm_consume
self.queue.set_success(kw['job_id'])
File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\queues\peewee_queue.py", line 83, in set_success
ModelSelect.for_update()
TypeError: inner() missing 1 required positional argument: 'self'

数据库信息:
image

测试案例:

image

报错: 2022-08-08 12:18:06 - _WorkItem - "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\concurrent_pool\custom_threadpool_executor.py:73" - run - ERROR - 函数 _run 中发生错误,错误原因是 <class 'TypeError'> inner() missing 1 required positional argument: 'self' Traceback (most recent call last): File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\concurrent_pool\custom_threadpool_executor.py", line 71, in run result = self.fn(*self.args, **self.kwargs) File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\consumers\base_consumer.py", line 667, in _run self._confirm_consume(kw) File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\consumers\peewee_conusmer.py", line 28, in _confirm_consume self.queue.set_success(kw['job_id']) File "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\queues\peewee_queue.py", line 83, in set_success ModelSelect.for_update() TypeError: inner() missing 1 required positional argument: 'self'

数据库信息: image

peewee_queue.py的 83行的 ModelSelect.for_update() 需要注释掉,测试代码忘掉了注释。

还有一个问题: SQLAlchemy-Utils 模块 要加在你的基础里面
11:04:24 "D:\DjangoProjects\adminlayui\venv\lib\site-packages\funboost\queues\sqla_queue.py:24" No module named 'sqlalchemy_utils'

我故意删除了sqlachmy和sqlalchemy_utils的自动安装,这个太常用了,且这两个包的版本要紧密配合,而且容易和用户自己的版本冲突。以后推荐用新加的peewee。如果用户要使用就自己手动安装。

好的~

框架支持kombu,kombu支持sqlachmy。所以也可以使用kombu作为kroker_kind

框架支持kombu,kombu支持10种消息队列。kombu就是celery的消息队列,celery是支持mysql servelsql sqlite作为消息队列的。只是网上celery例子90%是redis做消息队列,5%是rabiitmq做消息队列,其他的消息中间件代码例子少

看到了,确实 挺好的,我听说你有qq群?

看到了,确实 挺好的,我听说你有qq群?

文档就写了qq群了

celery 使用mysql做 消息队列 就是少,很多都是 redis,公司的机器 限制也较多,唉

我还有一个问题,定时任务开启后,,如果使用 代码关闭呢?

我到时候 会在 django上做一个关闭和开启的按钮,现在就是 这个关闭代码 逻辑是啥,还没弄明白

定时任务暂时是使用内存的。但要是动态前端添加定时任务,可以自己用apschudler包添加定时任务,apssheduler存储选择使用mysql,apscheduler使用mysql是官方自带的功能。

你要写的定时任务的函数逻辑就是发布消息。

我已经 可以写入 mysql,现在在测试 通过pid 去关闭任务呢

已经解决了

新增了 funboost + dajngo + 函数中操作了orm 的demo

https://github.com/ydf0509/funboost_django_orm_demo/tree/main