मैं बिना किसी मुद्दे के विंडोज़ पर ह्यूई के साथ फ्लास्क चलाता हूं, स्वीकार्य रूप से केवल विकास और परीक्षण के लिए। उत्पादन के लिए मैं लिनक्स सर्वर पर फ्लास्क/ह्यूई का उपयोग करता हूं। रेडिस बैक एंड, फ्लास्क 0.12 और ह्यूई 1.2.0 दोनों के साथ।
मैं ह्यूई कार्यों द्वारा विशिष्ट उपयोग के लिए फ्लास्क ऐप का एक विशेष "कट डाउन" संस्करण बनाने के लिए कारखाने पैटर्न का उपयोग करता हूं। यह संस्करण ब्लूप्रिंट लोड नहीं करता है या फ्लास्क-एडमिन को कॉन्फ़िगर नहीं करता है क्योंकि इन्हें ह्यूई कार्यों में आवश्यक नहीं है।
ऐप फ़ोल्डर में __init__.py
का उदाहरण कोड।
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 से लिया जाता है: App
एक वर्ग Flask
से विस्तार है। यह लागू करने के तरीके को देखने के लिए app
__init__.py
और इसके extensions module की जांच करें। ध्यान दें कि यह प्रोजेक्ट सेलेरी कार्य कतार के उपयोग के लिए एक विशिष्ट ऐप (create_celery_app
) भी बनाता है।
tasks.py
का उदाहरण। फ्लास्क संदर्भ बनाने के लिए with app.app_context():
के उपयोग पर ध्यान दें। अब मेरे कार्यों में फ्लास्क-मेल, फ्लास्क-एसक्लएल्चेमी (डीबी, मॉडल) आदि जैसे एक्सटेंशन तक पहुंच है।
@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)
क्या आपको कभी कोई मिला? मैं पिछले 2 हफ्तों में से एक की तलाश में हूं और अभी भी विकसित नहीं हो पाया है। –
@ केविनवस्को; ह्यूई सबसे व्यापक रूप से ऐसा लगता है। मैं इसके साथ प्रयोग कर रहा हूं, और यह आसान है और यह काम करता है। हालांकि, मुझे एक बड़ा मुद्दा मिला है, और लेखक इसके साथ मेरी मदद नहीं कर सका; मैं ह्यूई श्रमिकों का उपयोग करने में असमर्थ हूं जिन्हें फ्लास्क संदर्भ की आवश्यकता है। मैं इस संदर्भ को कार्यों को पारित करने का तरीका नहीं समझ सकता। यह मुझे वर्तमान में ह्यूई का उपयोग बंद कर देता है। –
प्रतिक्रिया के लिए धन्यवाद, मैं ह्यूई की जांच करूंगा, मुझे फ्लास्क के साथ काम नहीं करना है, इसलिए उम्मीद है कि यह कोई समस्या नहीं होगी।मुझे "वर्क्यू" नामक एक भी मिला, लेकिन इसे 3 साल या उससे भी ज्यादा समय में अपडेट नहीं किया गया है और यह स्पष्ट नहीं है कि यह विंडोज का समर्थन करता है या नहीं। –