西芹支持烧瓶,不打破皮查姆检查。

Flask-Celery-Helper的Python项目详细描述


尽管Flask documentation说芹菜扩展是 现在没必要了,我发现我仍然需要一个扩展来正确使用芹菜在大瓶应用。明确地 我需要一个init_app()方法在实例化芹菜之后对其进行初始化。

这个扩展还附带了一个single_instance方法。

  • Linux和OS X支持Python 2.6、2.7、3.3和3.4。
  • 在windows上支持python 2.7、3.3和3.4(python的32位和64位版本)。
Build Status WindowsBuild StatusCoverage StatusLatest VersionDownloads

归因

单实例装饰器灵感来自 Ryan Roemer

支持的平台

快速启动

安装:

pip install Flask-Celery-Helper

示例:

# example.pyfromflaskimportFlaskfromflask.ext.celeryimportCeleryapp=Flask('example')app.config['CELERY_BROKER_URL']='redis://localhost'app.config['CELERY_RESULT_BACKEND']='redis://localhost'celery=Celery(app)@celery.task()defadd_together(a,b):returna+bif__name__=='__main__':result=add_together.delay(23,42)print(result.get())

在不同的终端上运行这两个命令:

celery -A example.celery worker
python example.py

工厂示例

# extensions.pyfromflask.ext.celeryimportCelerycelery=Celery()
# application.pyfromflaskimportFlaskfromextensionsimportcelerydefcreate_app():app=Flask(__name__)app.config['CELERY_IMPORTS']=('tasks.add_together',)app.config['CELERY_BROKER_URL']='redis://localhost'app.config['CELERY_RESULT_BACKEND']='redis://localhost'celery.init_app(app)returnapp
# tasks.pyfromextensionsimportcelery@celery.task()defadd_together(a,b):returna+b
# manage.pyfromapplicationimportcreate_appapp=create_app()app.run()

单实例示例

# example.pyimporttimefromflaskimportFlaskfromflask.ext.celeryimportCelery,single_instancefromflask.ext.redisimportRedisapp=Flask('example')app.config['REDIS_URL']='redis://localhost'app.config['CELERY_BROKER_URL']='redis://localhost'app.config['CELERY_RESULT_BACKEND']='redis://localhost'celery=Celery(app)Redis(app)@celery.task(bind=True)@single_instancedefsleep_one_second(a,b):time.sleep(1)returna+bif__name__=='__main__':task1=sleep_one_second.delay(23,42)time.sleep(0.1)task2=sleep_one_second.delay(20,40)results1=task1.get(propagate=False)results2=task2.get(propagate=False)print(results1)# 65ifisinstance(results2,Exception)andstr(results2)=='Failed to acquire lock.':print('Another instance is already running.')else:print(results2)# Should not happen.

更改日志

1.1.0

  • 添加了Windows支持。
  • CELERY_RESULT_BACKEND不再是必需的。
  • ^除了redis之外,sqlite/mysql/postgresql还支持{tt1}$。
  • 中断更改:flask.ext.celery.CELERY_LOCK已移动到flask.ext.celery._LockManagerRedis.CELERY_LOCK

1.0.0

  • 支持非redis后端。

0.2.2

  • 增加了对Python2.6和3.x的支持。

0.2.1

  • 用functools修复了single_instance参数。

0.2.0

  • single_instance添加include_args参数。

0.1.0

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java JScrollBar设计   java如何按名称显示输出   java如何将多个ArrayList连接成一个?   java存储SSLSocketFactory为静态字段   java获得了奇怪的csv文件时间输出   java类在JSP中没有该属性   java ehcache程序未运行   java如何对数组的所有元素应用或操作?   sqlite如何用Java编写adb shell命令   java泛型中的动态数据类型   javajaxrs@Path阻止加载静态资源   java如何在安卓中从主字符串中获取特定字符串?   java与FLAG_LAYOUT_NO_LIMITS相反   关于OpenJDK 11和OpenJFX 11(&Proguard)的java迁移问题   eclipse设置Selenium for Java(创建Firefox驱动程序所需的JAR和导入)   java如何将空字符串更新为oracle Clob   对象为什么在Java中同时重写equals()和hashCode()?   java从另一个类获取变量的正确方法