मैं कई क्लाउड फ़ंक्शंस को तैनात करने की कोशिश कर रहा हूं जो सभी एक ही भंडार में हैं लेकिन विभिन्न पायथन फाइलों में हैं।

मूल रूप से, मेरे पास वे दो कार्य हैं

my_repo
- function_1_folder
  - function_1.py
  - requirements.txt
  - .gcloudignore
- function_2_folder  
  - function_2.py
  - requirements.txt
  - .gcloudignore

अंदर function_1.py मेरे पास function_1() है जिसे मैं function1 नामक अपने क्लाउड फ़ंक्शन पर तैनात करना चाहता हूं (ध्यान दें कि यहां कोई अंडरस्कोर नहीं है), और function_2 के लिए भी ऐसा ही है।

मैं function_1_folder पर जाता हूं और मैंने एक प्रवेश बिंदु (--entry-point function_1) निर्दिष्ट किया है, लेकिन मुझे एक "गायब main.py" त्रुटि मिलती है।

मैं पाइथन फ़ाइल नाम और फ़ंक्शन नाम (यदि संभव हो) दोनों को कैसे निर्दिष्ट कर सकता हूं? क्या gcloud उन requirements.txt को भी परिनियोजित करेगा जो उन पैकेजों को स्थापित करने के लिए आवश्यक है जिन पर मेरा कार्य निर्भर करता है?

शुक्रिया

1
ValLeNain 5 फरवरी 2021, 01:00

1 उत्तर

सबसे बढ़िया उत्तर

आप स्रोत फ़ाइल को मनमाने ढंग से नाम नहीं दे सकते। यह संरचना संबंधी आवश्यकताओं का हिस्सा है कि आपकी पायथन स्रोत फ़ाइल का नाम हमेशा main.py. आपकी निर्देशिका इस तरह दिखनी चाहिए:

my_repo
 - function_1_folder
   - main.py
   - requirements.txt
   - .gcloudignore
 - function_2_folder  
   - main.py
   - requirements.txt
   - .gcloudignore

ध्वज --entry-point का उपयोग आपकी स्रोत फ़ाइल पर फ़ंक्शन का नाम निर्दिष्ट करने के लिए किया जाता है। उदाहरण के लिए (HTTP के रूप में):

main.py

def function_1(request):
    return 'Hello World'

इस कमांड को function_1_folder के अंदर चलाएँ:

gcloud functions deploy function1 --entry-point function_1 --runtime python37 --trigger-http 

आपके अंतिम प्रश्न का उत्तर देने के लिए, आपके main.py के साथ आवश्यकताएँ.txt शामिल है और यह एक मान्य कॉन्फ़िगरेशन है। उन निर्भरताओं को निर्माण समय के दौरान स्थापित किया जाएगा।

अतिरिक्त संदर्भ के रूप में, देखें: https://github.com/GoogleCloudPlatform/ अजगर-दस्तावेज़-नमूने/पेड़/मास्टर/फ़ंक्शंस

2
Dondi 5 फरवरी 2021, 05:26
1
'Main.py' के अलावा आप 'main.py' के साथ एक ही डायरेक्टरी में अन्य पायथन फाइलों (यानी 'file1.py', 'file2, py', आदि) की मनमानी संख्या रख सकते हैं। उन मॉड्यूल को सामान्य तरीके से 'main.py' में आयात किया जा सकता है (और इस्तेमाल किया जा सकता है)। उसके शीर्ष पर उस निर्देशिका में किसी भी अन्य फाइल (यानी जेसन) का भी उपयोग किया जा सकता है। उन फ़ाइलों को कोड के अंदर से सामान्य फ़ाइलों के रूप में पढ़ा (और उपयोग किया जा सकता है) किया जा सकता है।
 – 
al-dann
5 फरवरी 2021, 11:00