现在Celery 4已经放弃了Windows支持,Windows上(Python 3)任务队列的最佳选择是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了现在Celery 4已经放弃了Windows支持,Windows上(Python 3)任务队列的最佳选择是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2537字,纯文字阅读大概需要4分钟。
内容图文
![现在Celery 4已经放弃了Windows支持,Windows上(Python 3)任务队列的最佳选择是什么?](/upload/InfoBanner/zyjiaocheng/951/c6dd97396aa24a22914f8b03d7d26cd4.jpg)
我们在Windows下的IIS下运行Flask站点,对于进程外任务,我们使用Celery. Celery在Windows下给了我们一些问题,但是现在我们很满意运行版本3.1.12,使用RabbitMQ / AMQP作为后端,它可以在Windows下运行.
Celery(4)的新版本有dropped support for Windows,所以我正在寻找一个可行的替代方案.
RQ似乎是一个非常好的任务队列,但它也不支持Windows(bottom of the page)
我已经看到了一些看起来不太受欢迎的任务队列,例如:
但目前还不清楚这些是否支持Windows和Flask.
我想知道是否有人在Windows下运行Python任务队列的经验.也许我提到的那个之一,或者另类.
我们不能选择运行Linux机器,因为我们没有管理Linux的经验,而且我们有许多运行需要Windows的遗留内容.
解决方法:
我在Windows上运行带有Huey的Flask没有任何问题,不可否认只是用于开发和测试.为了生产,我在Linux服务器上使用Flask / Huey.两者都是Redis后端,Flask 0.12和Huey 1.2.0.
我使用工厂模式创建Flask应用程序的专门“减少”版本,供Huey任务特定使用.此版本不加载蓝图或配置Flask-Admin,因为Huey任务中不需要这些.
app文件夹中__init__.py的示例代码. App是一个从Flask扩展的类:
def create_app(settings_override=None):
app = App('app')
if settings_override:
app.config.from_object(settings_override)
else:
app.config.from_object(os.environ['APP_SETTINGS'])
from .ext import configure_extensions
configure_extensions(app, admin, load_modules=True)
# REST
import rest.api_v1
app.register_blueprint(api_v1_bp, url_prefix='/api/v1')
# ... and more suff
def create_huey_app():
app = App('huey app')
app.config.from_object(os.environ['APP_SETTINGS'])
from .ext import configure_extensions
configure_extensions(app, admin=None, load_modules=False)
return app
configure_extensions的概念取自Quokka CMS.检查其应用程序__init__.py及其extensions module,看看它是如何实现的.另请注意,此项目如何创建特定应用程序(create_celery_app)以与Celery任务队列一起使用.
tasks.py的示例.请注意使用app.app_context():来创建Flask上下文.现在我的函数可以访问扩展名,如Flask-Mail,Flask-SqlAlchemy(db,models)等.
@huey.task()
def generate_transaction_documents_and_email(transaction_id):
app = create_huey_app()
with app.app_context():
reports.generate_transaction_documents_and_email(transaction_id)
@huey.task()
def send_email(subject, recipients, text_body, html_body, attachments=[], cc=[]):
app = create_huey_app()
with app.app_context():
emails.send_email(subject, recipients, text_body, html_body, attachments, cc)
@huey.periodic_task(crontab(minute='30'))
def synchronize_mailing_list():
app = create_huey_app()
if app.config['CREATESEND_SYNCHRONIZE']:
_list_name = app.config['CREATESEND_LIST']
with app.app_context():
sync_delete_ar_subscribers(_list_name)
sync_add_ar_subscribers(_list_name)
内容总结
以上是互联网集市为您收集整理的现在Celery 4已经放弃了Windows支持,Windows上(Python 3)任务队列的最佳选择是什么?全部内容,希望文章能够帮你解决现在Celery 4已经放弃了Windows支持,Windows上(Python 3)任务队列的最佳选择是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。