मैं Google appengine पर निक जॉनसन की थोक अपडेट लाइब्रेरी का उपयोग कर रहा हूं (http://blog.notdot.net/2010/03/Announcing-a-robust-datastore- थोक अद्यतन-उपयोगिता के लिए ऐप-इंजन)। यह अन्य कार्यों के लिए शानदार काम करता है, लेकिन निम्न कोड के साथ किसी कारण से:स्थायी टास्क विफलता: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'माइग्रेट'
Permanent failure attempting to execute task
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 258, in post
run(self.request.body)
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 122, in run
raise PermanentTaskFailure(e)
PermanentTaskFailure: 'module' object has no attribute 'Migrate'
यह मेरे लिए काफी विचित्र लगता है:
from google.appengine.ext import db
from myapp.main.models import Story, Comment
import bulkupdate
class Migrate(bulkupdate.BulkUpdater):
DELETE_COMPLETED_JOBS_DELAY = 0
DELETE_FAILED_JOBS = False
PUT_BATCH_SIZE = 1
DELETE_BATCH_SIZE = 1
MAX_EXECUTION_TIME = 10
def get_query(self):
return Story.all().filter("hidden", False).filter("visible", True)
def handle_entity(self, entity):
comments = entity.comment_set
for comment in comments:
s = Story()
s.parent_story = comment.story
s.user = comment.user
s.text = comment.text
s.submitted = comment.submitted
self.put(s)
job = Migrate()
job.start()
मैं अपने लॉग में निम्न त्रुटि मिलता है। जाहिर है कि कक्षा नौकरी से ऊपर है, वे एक ही फाइल में हैं और स्पष्ट रूप से नौकरी हैं। स्टार्ट कहा जा रहा है। यह मेरी माइग्रेट कक्षा क्यों नहीं देख सकता है?
संपादित करें: मैंने कोड के एक नए संस्करण में यह अद्यतन नौकरी जोड़ा, जो डिफ़ॉल्ट नहीं है। मैं सही यूआरएल (http://version.myapp.appspot.com/migrate) के साथ नौकरी का आह्वान करता हूं। क्या यह संभव है कि यह इस तथ्य से संबंधित है कि यह ऐप इंजन द्वारा प्रदत्त 'डिफ़ॉल्ट' संस्करण नहीं है?
बिल्कुल सही, बिल्कुल मुझे जो चाहिए था। मुझे लाइन के साथ कहीं और याद आना चाहिए था। धन्यवाद। –
वाह। क्या स्थगित दस्तावेज की सीमा कहीं भी है? यदि ऐसा है, तो मैं इसे पूरी तरह से याद किया! – allyourcode
@allyourcode यह डॉकस्ट्रिंग में है, और मेरा मानना है कि यह लेख में है। समस्या उत्पन्न होती है क्योंकि मुख्य स्क्रिप्ट में '__main__' का '__name__' होता है जिसे एक हैंडलर कहा जाता है, जो इसके सामान्य नाम से मेल नहीं खाता है। –