我有一个正常的Django网站运行.此外,还有另一个扭曲的过程,它使用Django的ORM监听Jabber存在通知并更新Django DB.
到目前为止,它只是调用相应的Django模型(在正确设置了设置环境之后).但是,这会阻止Twisted应用程序,这不是我想要的.
由于我不熟悉,我不知道,使用延迟以非阻塞方式访问Django DB(通过其ORM)的最佳方法是什么.
如果解析在线消息,我想在Django DB中保存具有jid_str的用户在线/离线(使用Django模型UserProfile).我用这个功能做到了:
Run Code Online (Sandbox Code Playgroud)def django_useravailable(jid_str, user_available): try: userhost = jid.JID(jid_str).userhost() user = UserProfile.objects.get(im_jabber_name=userhost) user.im_jabber_online = user_available user.save() return jid_str, user_available except Exception, e: print e raise jid_str, user_available,e
目前,我用以下方式调用它:
d = threads.deferToThread(django_useravailable, from_attr, user_available)
d.addCallback(self.success)
d.addErrback(self.failure)
Run Code Online (Sandbox Code Playgroud) 许多框架将其配置文件保留为与程序其余部分不同的语言.例如,Appengine以yaml格式保持配置.比较,DJango settings.py是一个python模块.我可以看到很多不利之处.
如果它与程序的其他部分使用相同的语言,我可以
在配置文件中做有趣的事情.
MEDIA_DIR = os.path.join(os.path.dir(__file__), 'media')
#Or whaever the correct cals are, you get the idea.
Run Code Online (Sandbox Code Playgroud)
import conf等我可以看到它的优点,如果它是像C/C++等重量级语言,但对于python,为什么它有意义.这似乎就是在不增加任何好处的情况下夺走权力.
我有一个NSOperationQueue,它包含2个NSOperations,并设置为通过设置setMaxConcurrentOperationCount为1 来一个接一个地执行它们.
其中一个操作是标准的非并发操作(只是一种main方法),它同步从Web(当然是在单独的操作线程上)检索一些数据.另一个操作是并发操作,因为我需要使用一些必须异步运行的代码.
问题是我发现并发操作只有在首先添加到队列中才有效.如果它出现在任何非并发操作之后,那么奇怪的是该start方法被称为正常,但在该方法结束并且我已经设置我的连接以回调方法之后,它永远不会.之后,队列中不再执行任何操作.就好像它在start方法返回后挂起,并且没有来自任何url连接的回调被调用!
如果我的并发操作首先放入队列中,那么一切正常,异步回调工作,后续操作在完成后执行.我根本不明白!
您可以在下面看到我的并发NSOperation的测试代码,我很确定它是可靠的.
任何帮助将不胜感激!
主线观察:
我刚刚发现,如果并发操作首先在队列中,那么该[start]方法将在主线程上调用.但是,如果它不是队列中的第一个(如果它在并发或非并发之后),[start]则不在主线程上调用该方法.这似乎很重要,因为它符合我的问题模式.这可能是什么原因?
并行的NSOperation代码:
@interface ConcurrentOperation : NSOperation {
BOOL executing;
BOOL finished;
}
- (void)beginOperation;
- (void)completeOperation;
@end
@implementation ConcurrentOperation
- (void)beginOperation {
@try {
// Test async request
NSURLRequest *r = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:r delegate:self];
[r release];
} @catch(NSException * e) {
// Do not rethrow exceptions.
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Finished loading... …Run Code Online (Sandbox Code Playgroud) 如何<textarea>使用JavaScript 更改元素的内容?
我想让它变空.
我需要在Linux下运行Eclipse插件运行shell脚本.我有一个漂亮的Rsync脚本,我想在Eclipse中使用一个按钮来激活它.
最好的解决方案是如果在我保存Stuff时也激活了Rsync shell脚本,那么也许我可以添加脚本构建器或类似的东西.
任何人都有解决这两种解决方案的线索?
为什么这个代码
int (*g)(int);
int (*h)(char);
h = g;
Run Code Online (Sandbox Code Playgroud)
在C中,编译时给我这样的警告:
'警告:从不兼容的指针类型分配'
在C++中,无法编译.
这是描述的问题Programming pearls.我无法理解作者所描述的二进制搜索方法.任何人都可以帮忙详细说明吗?谢谢.
编辑:我一般可以理解二进制搜索.我只是无法理解如何在这种特殊情况下应用二进制搜索.如何确定缺失的数字是否在某个范围内,以便我们可以选择另一个.英语不是我的母语,这是我无法理解作者的一个原因.所以,请使用普通英语:)
编辑:谢谢大家的好评和评论!我从解决这个问题中学到的最重要的一课就是二元搜索不仅适用于排序数组!
如果连接字符串Trusted_Connection=true使用SQL Server身份验证模式指定,我的Web应用程序的性能是否会受到影响?
python ×2
.net ×1
ado.net ×1
algorithm ×1
asp.net ×1
build ×1
c ×1
c# ×1
cocoa-touch ×1
command-line ×1
date ×1
django ×1
eclipse ×1
iphone ×1
javascript ×1
jquery ×1
nsoperation ×1
objective-c ×1
scripting ×1
settings ×1
shell ×1
twisted ×1
validation ×1
w3c ×1
warnings ×1
yaml ×1